次のコード スニペットは、ネイティブ ライブラリを 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 にラップする場合、このタスクを再実行せずにそれらを再ラップするにはどうすればよいでしょうか??
私はすべての説明に感謝しています:)