Android Studio 2.2 Preview 1 hat ein neues externes ndk-Build-Feature, aber aus app/build.gradle
-Ausschnitt im offiziellen Blogpost ist es überhaupt nicht klar, wie zusätzliche ndk-Build-Parameter festgelegt werden, die Application.mk
-Datei normalerweise enthält
Ich kann Android.mk
ndk-Build-Datei über externalNativeBuild
einstellen, aber wie kann ich die erforderlichen Application.mk
-Variablen einstellen?
Mein Application.mk
enthält:
NDK_TOOLCHAIN_VERSION := clang
APP_PLATFORM := Android-16
APP_ABI := armeabi
APP_STL := c++_static
APP_CPPFLAGS += -std=c++11
Android Studio 2.2 Preview 3 mit aktualisiertem Gradle-Plugin fügte Unterstützung für zusätzliche Argumente hinzu. Sie können Application.mk und zusätzliche Konfiguration wie folgt festlegen:
defaultConfig {
ndkBuild {
arguments "NDK_APPLICATION_MK:=Application.mk"
cFlags "-DTEST_C_FLAG1" "-DTEST_C_FLAG2"
cppFlags "-DTEST_CPP_FLAG2" "-DTEST_CPP_FLAG2"
abiFilters "armeabi-v7a", "armeabi"
}
}
Wenn möglich, würde ich empfehlen, auf CMake Build System zu migrieren, da der C++ - Code-Editor verbessert und die Debugging-Integration in Android Studio verbessert wurde. Weitere Informationen zur Konfiguration des Gradle-Plugins finden Sie hier: https://sites.google.com/a/Android.com/tools/tech-docs/external-c-builds .
Edit: In Android Studio 2.2 Preview 5 müssen Sie die Gruppen cmake
und ndkBuild
in die Gruppe externalNativeBuild
einschließen:
defaultConfig {
externalNativeBuild {
ndkBuild {
targets "target1", "target2"
arguments "NDK_APPLICATION_MK:=Application.mk"
cFlags "-DTEST_C_FLAG1", "-DTEST_C_FLAG2"
cppFlags "-DTEST_CPP_FLAG2", "-DTEST_CPP_FLAG2"
abiFilters "armeabi-v7a", "armeabi"
}
}
}
Edit 2: Es scheint, dass das Umschließen von ndkBuild
in der externalNativeBuild
-Gruppe aufgrund eines Fehlers in Build-Tools nicht funktioniert.
Android {
...
defaultConfig {...}
buildTypes {...}
// Encapsulates your external native build configurations.
externalNativeBuild {
// Encapsulates your CMake build configurations.
cmake {
// Provides a relative path to your CMake build script.
path "CMakeLists.txt"
}
}
}
Note: Wenn Sie Gradle mit einem vorhandenen ndk-build-Projekt verknüpfen möchten, verwenden Sie den Block ndkBuild {anstelle von cmake {} und geben Sie einen relativen Pfad zu Ihrer Android.mk-Datei an. Gradle enthält auch die Application.mk-Datei, wenn sie sich im selben Verzeichnis wie Ihre Android.mk-Datei befindet.