1

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

私はすべての説明に感謝しています:)

4

1 に答える 1

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

于 2016-05-28T11:12:10.880 に答える