Heim >Backend-Entwicklung >C++ >Wie definiere ich 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!