Maison >développement back-end >C++ >Pouvez-vous définir LOCAL_SRC_FILES dans le DSL gradle.build ndk {} ?
définir LOCAL_SRC_FILES dans NDK
Question :
Est-il possible de construire ndk dans Gradle . {} Définir LOCAL_SRC_FILES dans DSL ?
Contexte :
Dans le fichier gradle.build du module jni, utilisez la configuration suivante :
android { def jniSrc = System.getProperty("user.home") + "/srcs/jni" defaultConfig { ndk { moduleName "core" stl "gnustl_shared" cFlags "-std=c++11" } } ...
Le code source jni contient des instructions pour code de différentes plateformes (Android, iOS, WinRT). L'objectif est d'exclure le code dans Android.mk qui ne fonctionne pas sur Android.
Réponse :
Malheureusement, le plugin Gradle actuel ne prend pas en charge la définition de LOCAL_SRC_FILES dans le DSL ndk {}. Voici les solutions de contournement :
Méthode traditionnelle :
Conservez le fichier Android.mk traditionnel, qui peut exclure de manière fiable un code spécifique. Il est recommandé d'utiliser les paramètres cppFlags et cFlags pour avoir des citations de code et une coloration syntaxique dans Android Studio.
Approche expérimentale (tâche buildNative) :
Désactivez la tâche de construction NDK standard et injectez une tâche buildNative pour créer du code natif. Cela fonctionne pour le plugin expérimental 'com.android.tools.build:gradle-experimental:0.2.0'.
Approche avancée (bibliothèque statique) :
Si votre code natif est divisé en plusieurs répertoires (fichiers spécifiques à Android et fichiers indépendants de la plate-forme), vous pouvez envisager de créer un fichier statique library et liez-le pour obtenir les symboles nécessaires. Cette approche permet de créer une bibliothèque statique à l'aide de ndk-build et de l'utiliser avec les objets nécessaires au moment de la liaison.
Mise à jour :
Dans les plugins expérimentaux, vous pouvez utiliser compileJavaTask.dependsOn buildNative pour remplacer la tâche compileTask.dependsOn buildNative.
Mise à jour 2 :
Il est possible de lier un seul fichier source local au projet Android Studio, résolvant ainsi le problème.
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!