Android Studio 2.2 Preview 1 dispose d'une nouvelle fonctionnalité de génération de ndk externe, mais l'extrait de code app/build.gradle
figurant dans l'article officiel de blog ne précise pas comment définir des paramètres de construction de ndk supplémentaires que le fichier Application.mk
contient généralement
Je peux définir le fichier de construction Android.mk
ndk via externalNativeBuild
, mais comment définir les variables Application.mk
requises?
Mon Application.mk
contient:
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 avec le plugin Gradle mis à jour ajoute le support pour des arguments supplémentaires. Vous pouvez définir Application.mk et une configuration supplémentaire comme ceci:
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"
}
}
Si possible, je recommanderais de migrer vers le système de construction CMake, en raison de la qualité de l'éditeur de code C++ et de l'intégration du débogage dans Android Studio. Vous trouverez plus d’informations sur la configuration du plugin Gradle ici: https://sites.google.com/a/Android.com/tools/tech-docs/external-c-builds .
Edit: Dans Android Studio 2.2 Preview 5, vous devez insérer les groupes cmake
et ndkBuild
dans le groupe externalNativeBuild
:
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: Il semble qu'emballer ndkBuild
sous le groupe externalNativeBuild
ne fonctionne pas à cause d'un bogue dans les outils de construction.
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: Si vous souhaitez lier Gradle à un projet ndk-build existant, utilisez le bloc ndkBuild {} au lieu de cmake {} et indiquez un chemin relatif à votre fichier Android.mk. Gradle inclut également le fichier Application.mk s'il se trouve dans le même répertoire que votre fichier Android.mk.