nativeLibsToJar 有什么神奇之处
what is the magic of nativeLibsToJar
以下代码片段似乎是如何使用 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。但是我真的不明白:
- 为什么一定要用a包起来
*.jar?
- 在我的本地库中更改某些内容时,我可以看到更改在我的应用程序中生效,而且 Gradle 构建过程总是输出“...:app :nativeLibsToJar 最新...”。所以我假设这个任务不重运行。但是,当此任务将 *.so 包装在 *.jar 中时,如何在不重新 运行 执行此任务的情况下重新包装它们?
感谢每一个解释:)
这真的很有趣 - 我多次找到这个作为解决方案:
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
完成的
以下代码片段似乎是如何使用 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。但是我真的不明白:
- 为什么一定要用a包起来 *.jar?
- 在我的本地库中更改某些内容时,我可以看到更改在我的应用程序中生效,而且 Gradle 构建过程总是输出“...:app :nativeLibsToJar 最新...”。所以我假设这个任务不重运行。但是,当此任务将 *.so 包装在 *.jar 中时,如何在不重新 运行 执行此任务的情况下重新包装它们?
感谢每一个解释:)
这真的很有趣 - 我多次找到这个作为解决方案:
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