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

Puis-je définir LOCAL_SRC_FILES dans NDK DSL ?

DDD
Libérer: 2024-11-23 09:55:17
original
340 Les gens l'ont consulté

Can I define LOCAL_SRC_FILES in NDK DSL?

Peut définir LOCAL_SRC_FILES dans NDK DSL ?

Afin de définir LOCAL_SRC_FILES dans le bloc Gradle ndk{}, il est important de noter que cette fonctionnalité n'est pas prise en charge par plugins Gradle actuels. Même le plugin "expérimental" permet uniquement d'ajouter des répertoires.

Approche recommandée

L'utilisation du traditionnel Android.mk est recommandée pour accomplir cette tâche de manière fiable. De plus, il est suggéré de laisser jni.srcDirs sous la forme [${jniSrc}] pour permettre à Android Studio d'afficher ces fichiers pour un accès facile et une coloration syntaxique.

Désactivation de la construction NDK

Si Android traditionnel. L'approche mk n'est pas souhaitée, les tâches de construction NDK régulières peuvent être désactivées et une tâche buildNative peut être injectée à la place :

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

Gradle Experimental Plugin

Pour le plugin 'com.android.tools.build:gradle-experimental:0.2.0', une approche similaire peut être adoptée, mais avec correspondance de tâches différentes :

tasks.all {
    task ->
        if (task.name.startsWith('compile') && task.name.contains('MainC')) {
            task.enabled = false
        }
        if (task.name.startsWith('link')) {
            task.enabled = false
        }
        if (task.name.endsWith("SharedLibrary") ) {
            task.dependsOn buildNative
        }
}
Copier après la connexion

Exclure les fichiers de la construction NDK

Avec expérimental plugin 0.4.0, les fichiers peuvent être exclus de la construction du NDK par modèle :

android.sources {
    main {
       jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal