Définition de LOCAL_SRC_FILES dans NDK DSL
Le DSL Android NDK vous permet de spécifier des fichiers sources natifs pour votre module. Cependant, dans les anciennes versions du DSL, il n'existait aucun moyen direct de définir manuellement LOCAL_SRC_FILES.
Solution de plug-in expérimental
Avec le plug-in expérimental Android Gradle 0.4.0, vous pouvez désormais exclure les fichiers sources de la version NDK en fonction de modèles. Par exemple :
android.sources { main { jni.source { srcDirs = ["~/srcs/jni"] exclude "**/win.cpp" } } }
Solution de contournement pour les anciens plugins
Malheureusement, pour les anciennes versions du DSL, il n'est pas possible de définir directement LOCAL_SRC_FILES. Au lieu de cela, il est recommandé d'utiliser le fichier Android.mk traditionnel pour gérer vos fichiers sources natifs.
Vous pouvez désactiver les tâches de construction NDK par défaut et injecter une tâche personnalisée pour compiler vos fichiers sources natifs :
def ndkBuild = android.ndkDirectory import org.apache.tools.ant.taskdefs.condition.Os if (Os.isFamily(Os.FAMILY_WINDOWS)) { ndkBuild += '.cmd' } task buildNative(type: Exec, description: 'Compile JNI source via NDK') { commandLine '$ndkBuild', 'NDK_PROJECT_PATH="$jniSrc/..' } task cleanNative(type: Exec, description: 'Clean JNI object files') { commandLine '$ndkBuild', 'clean', 'NDK_PROJECT_PATH="$jniSrc/..' } clean.dependsOn 'cleanNative' tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn buildNative } tasks.all { task -> if (task.name.contains('compileDebugNdk') || task.name.contains('compileReleaseNdk')) task.enabled = false }
Mises en garde
Notez que cette solution de contournement peut ne pas produire une configuration déboguable. Pour résoudre ce problème, vous pouvez créer une bibliothèque statique avec ndk-build et la lier aux objets nécessaires pour extraire les symboles de la bibliothèque.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!