LOCAL_SRC_FILES in NDK definieren
Frage:
Ist es möglich, NDK in Gradle zu erstellen? . {} LOCAL_SRC_FILES in DSL definieren?
Hintergrund:
Verwenden Sie in der Datei gradle.build des JNI-Moduls die folgende Konfiguration:
android { def jniSrc = System.getProperty("user.home") + "/srcs/jni" defaultConfig { ndk { moduleName "core" stl "gnustl_shared" cFlags "-std=c++11" } } ...
Der JNI-Quellcode enthält Anweisungen für Code für verschiedene Plattformen (Android, iOS, WinRT). Ziel ist es, Code in Android.mk auszuschließen, der unter Android nicht funktioniert.
Antwort:
Leider unterstützt das aktuelle Gradle-Plugin nicht die Definition von LOCAL_SRC_FILES im ndk {} DSL. Hier sind die Problemumgehungen:
Traditionelle Methode:
Behalten Sie die traditionelle Android.mk-Datei bei, die zuverlässig bestimmten Code ausschließen kann. Es wird empfohlen, die Einstellungen cppFlags und cFlags zu verwenden, um Codezitate und Syntaxhervorhebung in Android Studio zu ermöglichen.
Experimenteller Ansatz (BuildNative-Aufgabe):
Deaktivieren Sie die reguläre NDK-Build-Aufgabe und fügen Sie eine BuildNative-Aufgabe ein, um nativen Code zu erstellen. Dies funktioniert für das experimentelle Plugin „com.android.tools.build:gradle-experimental:0.2.0“.
Erweiterter Ansatz (statische Bibliothek):
Wenn Ihr nativer Code in mehrere Verzeichnisse unterteilt ist (Android-spezifische Dateien und plattformunabhängige Dateien), können Sie die Erstellung einer statischen Bibliothek in Betracht ziehen Bibliothek und verknüpfen Sie sie, um die erforderlichen Symbole zu erhalten. Dieser Ansatz ermöglicht den Aufbau einer statischen Bibliothek mit ndk-build und deren Verwendung mit den erforderlichen Objekten zum Linkzeitpunkt.
Update:
In experimentellen Plugins können Sie „compileJavaTask.dependsOn buildNative“ verwenden, um die Aufgabe „compileTask.dependsOn buildNative“ zu ersetzen.
Update 2:
Es ist möglich, eine einzelne lokale Quelldatei mit dem Android Studio-Projekt zu verknüpfen und so das Problem zu lösen.
Das obige ist der detaillierte Inhalt vonKönnen Sie LOCAL_SRC_FILES im gradle.build ndk {} DSL definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!