Android的NDK包括摇篮和CMake的第三方预建的共享库(Android NDK includ

2019-09-29 01:20发布

我挣扎包括在我的Android项目预建的共享库

有问题的库libusb的,这我的Android项目的NDK部分需要。

一切都是编译和链接OK,即项目顺利建设,但在我的设备上安装APK应用程序崩溃。

从监视相关错误味精是:

java.lang.UnsatisfiedLinkError: dlopen failed: library "libusb1.0.so" not found

什么到目前为止,我已经试过是添加以下到我的应用程序/的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 DIR和手动复制共享库的armeabi-V7A版本, libusb1.0.so ,在那里。

已安装APK后在监视器仍然得到同样的错误信息..

Answer 1:

给一个尝试这一块,而不是从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})


文章来源: Android NDK including a 3rd party prebuilt shared library with Gradle and CMake