Maison > développement back-end > C++ > Comment définir LOCAL_SRC_FILES dans Android NDK DSL ?

Comment définir LOCAL_SRC_FILES dans Android NDK DSL ?

Susan Sarandon
Libérer: 2024-11-16 04:11:03
original
972 Les gens l'ont consulté

How to Define LOCAL_SRC_FILES in Android NDK DSL?

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"
        }
    }
}
Copier après la connexion

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
}
Copier après la connexion

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!

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