自动从 NDK 库项目复制 .so 文件?
Automatically copy .so files from NDK library project?
将 Android Studio 1.2.1.1
与 Gradle 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/'
}
将 Android Studio 1.2.1.1
与 Gradle 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/'
}