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
Susan Sarandonoriginal
2024-11-16 04:11:03985parcourir

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

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!

Déclaration:
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