nativeLibsToJar

时间:2016-05-25 21:19:41

标签: android-studio android-ndk ndk-build

以下代码段似乎是如何在Android Studio中包含本机库的答案:

task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {
    destinationDir file("$buildDir/native-libs")
    baseName 'native-libs'
    extension 'jar'
    from fileTree(dir: 'libs', include: '**/*.so')
    into 'lib/'
}

tasks.withType(Compile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

似乎只需将* .so打包到* .jar中。但是我真的不明白它:

  • 为什么有必要将它包装成一个 * .jar?
  • 在我的本机库中更改内容时,我可以看到更改在我的应用程序中生效,Gradle构建过程始终输出" ...:app:nativeLibsToJar UP-最新...&#34 ;.所以我认为这个任务不会重新运行。但是当这个任务将* .so包装在* .jar中时,如何重新包装它们而不重新运行这个任务?

我感谢每一个解释:)

1 个答案:

答案 0 :(得分:0)

这真的很有趣 - 我多次发现这个解决方案:

task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {
    destinationDir file("$buildDir/native-libs")
    baseName 'native-libs'
    extension 'jar'
    from fileTree(dir: 'libs', include: '**/*.so')
    into 'lib/'
}

但是它可以删除,因为它没有任何用处(也许它在较旧的构建版本中没有用)。

真正的诀窍是通过sourceSets.main.jniLibs.srcDir 'src/main/libs/' //integrate your libs from libs instead of default dir 'jniLibs

完成的