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

3
使用 Android Studio 1.2.1.1Gradle 1.2.3。 我有一个 NDK 库项目 A,它在自己的 libs 文件夹中生成多个 .so 文件。 不过,在 build.gradle 文件中我找不到对该文件夹的任何引用。
当我从我的应用程序 MyApp 中引用库 A 时,我期望这些 .so 文件被复制到 MyApp/src/main/jniLibs,但事实并非如此。 我需要每次更改 A 库时手动复制这些文件吗?
如何自动化此步骤?
2个回答

4
我将我的编辑成下面这样,从ndk-build.cmd放置它们的位置获取选项。
sourceSets {
     main.jniLibs.srcDirs += 'libs/'
}

还有一件事需要注意;必须安装本地镜像,否则相应的 .so 文件将不会生成。 - l33t

3
我不知道是否有一种方法可以让你想要的.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>'
    }
}

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