Heim >Backend-Entwicklung >C++ >Wie definiere ich LOCAL_SRC_FILES in Android NDK DSL?

Wie definiere ich LOCAL_SRC_FILES in Android NDK DSL?

Susan Sarandon
Susan SarandonOriginal
2024-11-16 04:11:03977Durchsuche

How to Define LOCAL_SRC_FILES in Android NDK DSL?

LOCAL_SRC_FILES in NDK DSL definieren

Mit dem Android NDK DSL können Sie native Quelldateien für Ihr Modul angeben. Allerdings gab es in älteren Versionen des DSL keine direkte Möglichkeit, LOCAL_SRC_FILES manuell zu definieren.

Experimentelle Plugin-Lösung

Mit dem experimentellen Android Gradle Plugin 0.4.0, Sie können jetzt Quelldateien basierend auf Mustern vom NDK-Build ausschließen. Zum Beispiel:

android.sources {
    main {
        jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}

Workaround für ältere Plugins

Leider ist es für ältere Versionen des DSL nicht möglich, LOCAL_SRC_FILES direkt zu definieren. Stattdessen wird empfohlen, die herkömmliche Android.mk-Datei zum Verwalten Ihrer nativen Quelldateien zu verwenden.

Sie können die standardmäßigen NDK-Build-Aufgaben deaktivieren und eine benutzerdefinierte Aufgabe zum Kompilieren Ihrer nativen Quelldateien einfügen:

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
}

Vorbehalte

Beachten Sie, dass diese Problemumgehung möglicherweise nicht zu einem debuggbaren Setup führt. Um dieses Problem zu beheben, können Sie mit ndk-build eine statische Bibliothek erstellen und diese mit den erforderlichen Objekten verknüpfen, um Symbole aus der Bibliothek abzurufen.

Das obige ist der detaillierte Inhalt vonWie definiere ich LOCAL_SRC_FILES in Android NDK DSL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn