cmakeのか、新しいプラグインに移行etween CMakeのとNDK-ビルドおよびセットアップ:
いくつかの初期の注意事項:
- ネイティブライブラリのためのAndroid Studioのデフォルトのビルドツールはcmakeのです。
- Android Studioは、ネイティブコードをコンパイルするためにビルドツールキットを使用する多数の既存プロジェクトがあるため、ndk-buildもサポートしています。
- 新しいネイティブライブラリを作成する場合は、CMakeを使用する必要があります。
- 多数のレガシープロジェクトがあるため、ndk-buildのサポートが含まれています。
CMakeの:あなたのネイティブライブラリを構築するためのGradleと一緒に働く
外部ビルド・ツール。 ndk-buildだけを使用する予定がある場合は、このコンポーネントは必要ありません。 CMakeはあなたのネイティブライブラリを構築する方法を知るためにビルドスクリプトを必要とします。新しいプロジェクトの場合、Android StudioはCMakeビルドスクリプトCMakeLists.txt
を作成し、モジュールのルートディレクトリに配置します。
ネイティブソースにまだCMakeビルドスクリプトがない場合は、自分で作成し、適切なCMakeコマンドを組み込む必要があります。 CMakeビルドスクリプトは、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-ビルド:
Androidのメーカーはまた、彼らのネイティブコードをコンパイルするビルドツールキットを使用している既存/レガシー多数のプロジェクトのためにNDKビルドをサポートしています。自分で作成し、ndk-build用の適切なAndroid.mkファイルを組み込み、次にCMakeと同じndk-build用のgradleファイルを設定する必要があります。両方CMakeのとNDKビルド用
設定のGradle:
手動でネイティブライブラリにリンクするのGradleを設定するには、あなたはモジュールレベルbuild.gradle
ファイルにexternalNativeBuild
ブロックを追加し、いずれかでそれを設定する必要がありますcmakeのかndkBuildブロック:
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"
}
}
}
あなたは、既存のNDKビルドプロジェクトへのGradleをリンクする代わりに、cmakeのブロックのndkBuild
ブロックを使用して、あなたのAndroid.mk
Fへの相対パスを提供する場合ile。
CMake _togetherをNDKと併用することはできますが、NDKの代わりに使用することはできません。 – Michael
CMakeはNDKを使ってネイティブコードを共有ライブラリに作り、アプリケーションのJavaコード(または純粋なアンドロイドのネイティブコードプロジェクト)で使用する新しい方法です。 NDKパッケージにバンドルされている他のツールを使用するビルドツールです。 NDKとCMakeは別のドメインにありますが、それを比較するのは公正ではありません。ダウンロードしたNDKパッケージの中にNDKを使用してネイティブソースコードを作成する別のツールがあります.ndk-build:ndk-buildツールとcmakeは同等です:彼らは同じ問題を解決します。 – Gerry
私は未来を見ることができます:ndk-buildは廃止され、CMakeはルールを適用します。 :-) –