自动从 NDK 库项目复制 .so 文件?

Automatically copy .so files from NDK library project?

Android Studio 1.2.1.1Gradle 1.2.3 结合使用。我有一个 NDK 库项目 A,它在自己的 libs 文件夹中生成许多 .so 文件。但是,我在 build.gradle 文件中的任何地方都看不到对此文件夹的引用。

当我从我的应用程序 MyApp 引用库 A 时,我希望 .so 文件被复制到 MyApp/src/main/jniLibs,但事实并非如此。每次在 A 库中进行更改时,是否都必须手动复制这些文件?

如何自动执行此步骤?

我不知道是否有办法让您 .so 随心所欲地复制文件而无需任何操作。

但您可以 gradle 为您完成。 在您的 gradle 文件中,添加一个任务,将这些 .so 文件复制到您需要的位置。

android {
    ...
    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir 'src/main/libs'
    }

    //copying files
    task copyNativeLib(type: Exec, description: 'Copy native file') {
        commandLine 'cp <path_of_so_files> src/main/libs'
    }

    //add dependencies
    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn copyNativeLib
    }
}

或者只是

android {
    ...
    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir '<path_to_your_so_files>'
    }
}

我将我的编辑成如下所示,它是从 ndk-build.cmd 放置它们的地方拾取的。

sourceSets {
     main.jniLibs.srcDirs += 'libs/'
}