我努力在我的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
目录并手动复制共享库的{armabi-v7a版本libusb1.0.so
。
安装apk后,Monitor中的错误信息仍然相同..
答案 0 :(得分:0)
尝试一下此方法,而不是尝试使用env方法,您应该尝试$ {CMAKE_SOURCE_DIR}
set(usb_DIR ${CMAKE_SOURCE_DIR}/../../../../libs)
add_library(libusb SHARED IMPORTED)
set_target_properties(libusb PROPERTIES IMPORTED_LOCATION
${usb_DIR}/libs/${ANDROID_ABI}/libusb1.0.so)
target_link_libraries(${libusb})