如何在Android Studio 2.2中添加预编译的*.so库

5

我尝试将库添加到项目中,但是Android Studio忽略了我的库。

这是我的CmakeLists.txt文件:

add_library(mylib SHARED IMPORTED) set_target_properties(mylib PROPERTIES IMPORTED_LOCATION src/main/libs/${ANDROID_ABI}/libmylib.so)

在构建apk之后,它并不包含libmylib.so。如何使用cmake将预编译库添加到项目中?


可能是如何在Android Studio中包含*.so库?的重复问题。 - Ciro Santilli OurBigBook.com
将位于 Android 项目外部的 .so 文件添加到项目中:https://dev59.com/favka4cB1Zd3GeqP1PMo - user1506104
2个回答

7

目前需要通过应用程序对其进行打包。可以是以下内容:

    sourceSets {
        main {
            // let gradle pack the shared library into apk
            jniLibs.srcDirs = ['point/to/your/shared-lib']
       }
    }

一个例子是:https://github.com/googlesamples/android-ndk/blob/master/hello-libs/app/build.gradle 如果您的共享库[您的共享库位于项目路径内]靠近您的项目,请将共享库的相对路径放在您的CMakeLists.txt中即可。

这个错误底部的一些背景讨论可能会有所帮助:https://code.google.com/p/android/issues/detail?id=214664&can=8&q=vulkan&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened


我可以问一下这个如何处理多个 ABI 吗?它们需要单独指定还是可以直接指向包含不同架构的构建的基本目录? - Luther
对于多个ABI,你的共享库目录应该有abi目录(由你放置),如x86、x86_64、arm64-v8a、armeabi-v7a;Gradle会自动将它们合并到最终的APK中。 - Gerry

2

1 - 在根目录下创建一个新文件夹:/libs,并将您的外部库放在其中。

2 - 更改项目结构。

yourprojectname/
      app/
           - build.gradle  // Local Gradle configuration (for app only)
           ...
      libs/
           libraryName/
                - build.gradle // Local Gradle configuration (for library only)
      - build.gradle // Global Gradle configuration (for whole project)
      - settings.gradle
      - gradle.properties
      ...

3 - 别忘了将 gradle.setting 更改为

include ':app', ':libraryName'
project(':libraryName').projectDir = new File('libs/libraryName')

4-在app/build.gradle中添加你的库

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile project(":PagerSlidingTabStrip")
}

在Android Studio中有一种方法可以添加库,以便配置gradle和项目结构,具体步骤如下:

1.选择文件/项目结构

2.在模块部分找到你的项目,在“依赖项”选项卡中添加你的库


1
实际上,你的回答和问题的背景无关。问题是关于添加具有.so文件的ndk库的。而你所说的是添加普通的jar或aar库。 - Vivek Mishra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接