J'ai essayé de donner quelques explications à identifier les différents entre CMake et NDK-Build et de l'installation:
Quelques remarques:
- Android Studio par défaut de l'outil de construction de bibliothèques natives est CMake.
- Android Studio prend également en charge ndk-build en raison du grand nombre de projets qui utilisent la construire des outils pour compiler en code natif.
- Si vous êtes à la création d'une nouvelle bibliothèque native, vous devez utiliser CMake.
- Soutien pour le ndk-build est inclus en raison du grand nombre d'anciens projets.
CMake:
Externe outil de construction qui travaille aux côtés de Gradle pour construire votre bibliothèque native. Vous n'avez pas besoin de ce composant si vous ne prévoyez d'utiliser ndk-build. CMake besoin d'un script de construction de savoir comment construire votre bibliothèque native. Pour les nouveaux projets, Android Studio crée un script de build CMake, CMakeLists.txt
, et la place dans votre module du répertoire racine.
Si vos sources natives n'en avez pas déjà un script de build CMake, vous devez en créer un vous-même et d'inclure les CMake commandes. Un script de build CMake est un fichier texte que vous devez le nom de CMakeLists.txt.
# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.
cmake_minimum_required(VERSION 3.4.1)
# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add.library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.
add_library( # Specifies the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/file_name.cpp )
NDK-Build:
Android Studio prend également en charge ndk-build en raison du grand nombre de/l'héritage de projets qui utilisent la construire des outils pour compiler en code natif. Vous devez créer un vous-même et d'inclure les Android.mk fichier ndk-build et que vous devez ensuite configurer gradle fichier ndk-build même que CMake.
Configurer Gradle à la fois pour CMake et ndk-build:
Pour configurer manuellement Gradle un lien vers votre bibliothèque native, vous devez ajouter l' externalNativeBuild
bloc à votre niveau module build.gradle
le fichier et de le configurer avec le cmake ou ndkBuild bloc:
android {
...
defaultConfig {
...
// This block is different from the one you use to link Gradle
// to your CMake or ndk-build script.
externalNativeBuild {
// For ndk-build, instead use the ndkBuild block.
cmake/ndkBuild {
// Passes optional arguments to CMake.
arguments "-DANDROID_ARM_NEON=TRUE", "-DANDROID_TOOLCHAIN=clang"
// Sets optional flags for the C compiler.
cFlags "-fexceptions", "-frtti"
// Sets a flag to enable format macro constants for the C++ compiler.
cppFlags "-D__STDC_FORMAT_MACROS"
}
}
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
}
}
buildTypes {...}
// Encapsulates your external native build configurations.
externalNativeBuild {
// Encapsulates your CMake build configurations.
cmake {
// Provides a relative path to your CMake build script.
path "src/main/cpp/CMakeLists.txt"
}
// Encapsulates your ndkBuild build configurations.
ndkBuild {
// Provides a relative path to your ndkBuild Android.mk file.
path "src/main/cpp/Android.mk"
}
}
}
Si vous souhaitez établir un lien Gradle à un ndk-build du projet, l'utilisation de l' ndkBuild
bloc à la place de la cmake bloc, et de fournir un chemin d'accès relatif à votre Android.mk
le fichier.