【发布时间】:2017-06-14 17:22:39
【问题描述】:
我正在努力在我的 android 项目中包含一个预构建的共享库
有问题的库是 libusb,我的 android 项目的 NDK 部分需要它。
一切都在编译和链接正常,即项目正在成功构建,但是在我的设备上安装 apk 时,应用程序崩溃了。
来自监视器的相关错误消息是:
java.lang.UnsatisfiedLinkError: dlopen failed: library "libusb1.0.so" not found
到目前为止,我尝试将以下内容添加到我的 app/build.gradle:
sourceSets{
main {
// let gradle pack the shared library into apk
jniLibs.srcDirs = '/home/me/third-party/libusb-1.0.21/android/libs/'
}
在我添加的 CMakeLists.txt 中:
set(libusb_DIR $ENV{HOME}/third-party/libusb-1.0.21/android/libs)
set(libusb_LIB usb1.0)
link_directories( ${libusb_DIR}/${ANDROID_ABI}/ )
target_link_libraries( ${libusb_LIB} )
我什至尝试创建一个app/src/main/jniLibs 目录并在其中手动复制共享库的 armeabi-v7a 版本 libusb1.0.so。
安装 apk 后,Monitor 中仍然收到相同的错误消息..
【问题讨论】:
-
你应该检查
libusb1.0.so是否被打包到APK中。 Android Studio 提供了一个工具来分析 APK 并查看其内容。 -
我已经在stackoverflow.com/questions/9870435/… 展示了如何做到这一点,我已经在这里回答了,但它被删除了。
标签: android android-ndk cmake android-gradle-plugin