我在Android应用程序中使用外部共享库时遇到问题。我创建了一个Android.mk文件,如下所示:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyApp
LOCAL_SRC_FILES := myexternallib.so
include $(PREBUILT_SHARED_LIBRARY)
使用ndk-build我能够生成本地本机库,并在System.loadLibrary
方法中使用此本机库。
当我运行应用程序时,出现错误java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1486]: 2659 unknown reloc type 19 @ ( 4220)
在进一步搜索时,我发现了一个建议使用android工具链构建共享库的链接。所以我使用了一个工具链arm-eabi-gcc
,它可以在android源代码的prebuilt/linux_x86/toolchain/arm-eabi-4.4.3/bin
目录中找到,用于构建我的源文件。我收到错误arm-eabi-gcc: error trying to exec 'cc1': execvp: No such file or directory
。我还注意到toolchain文件夹没有名为cc1
的文件。
我是否遵循了正确的程序?是否有其他方法可以在Android代码中引用外部共享库?
答案 0 :(得分:0)
您确实应该使用Android工具链。
Android NDK附带有关使用其工具的详细说明:http://source-android.frandroid.com/ndk/docs/STANDALONE-TOOLCHAIN.html。如果您对本文档有任何疑问,请随时提出。