L'extrait de code suivant semble être la réponse comment inclure les bibliothèques natives avec Android Studio:ce qui est la magie de nativeLibsToJar
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)
}
Il semble emballer simplement le * .so dans * .jar. Mais je ne comprends vraiment pas:
- Pourquoi est-il nécessaire d'envelopper dans un * .jar?
- Lors de la modification de quelque chose dans mes bibliothèques natives, je peux voir les modifications prises en compte dans mon application, le processus de construction Gradle génère toujours "...: app: nativeLibsToJar UP-TO-DATE ...". Donc, je suppose que cette tâche n'est pas relancée. Mais quand cette tâche encapsule le * .so dans * .jar que comment est-il possible de les re-emballer sans réexécuter cette tâche?
Je suis reconnaissant pour toutes les explications :)