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

时间:2015-06-21 20:10:26

标签: android-studio gradle android-ndk

Android Studio 1.2.1.1Gradle 1.2.3一起使用。我有一个NDK库项目A,它在自己的.so文件夹中生成了许多libs个文件。但是,我无法在build.gradle文件中的任何位置看到对此文件夹的引用。

当我从我的应用A引用库MyApp时,我希望将.so个文件复制到MyApp/src/main/jniLibs,但它们不会。每次在A库中进行更改时,是否必须手动复制这些文件?

如何自动执行此步骤?

2 个答案:

答案 0 :(得分:4)

我编辑了我的内容,看起来如下,从ndk-build.cmd放置它们。

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

答案 1 :(得分:3)

我不知道是否可以将.so个文件复制到您想要的任何内容中。

但是你可以为你做这件事。 在您的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>'
    }
}