以下代码片段似乎是如何在 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-TO-DATE ...”。所以我假设这个任务不会重新运行。但是,当此任务将 *.so 包装在 *.jar 中时,如何在不重新运行此任务的情况下重新包装它们?
我感谢每一个解释:)