Maison > développement back-end > C++ > Pouvez-vous définir LOCAL_SRC_FILES dans le DSL gradle.build ndk {} ?

Pouvez-vous définir LOCAL_SRC_FILES dans le DSL gradle.build ndk {} ?

Linda Hamilton
Libérer: 2024-11-29 00:54:11
original
478 Les gens l'ont consulté

Can You Define LOCAL_SRC_FILES in the gradle.build ndk {} DSL?

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"
        }
    }

    ...
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal