Android Studio 2.2 Preview 1には新しい外部NDKビルド機能がありますが、公式ブログの投稿に示されているapp/build.gradle
スニペットからは、どのように明確ではありませんApplication.mk
ファイルに通常含まれる追加のndkビルドパラメーターを設定するには
externalNativeBuild
経由でAndroid.mk
ndkビルドファイルを設定できますが、必要なApplication.mk
変数を設定するにはどうすればよいですか?
私のApplication.mk
には以下が含まれます:
NDK_TOOLCHAIN_VERSION := clang
APP_PLATFORM := Android-16
APP_ABI := armeabi
APP_STL := c++_static
APP_CPPFLAGS += -std=c++11
更新されたgradleプラグインを備えたAndroid Studio 2.2 Preview 3は、追加の引数のサポートを追加しました。 Application.mkおよび追加の構成を次のように設定できます。
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"
}
}
Android Studio。より良いC++コードエディタとデバッグ統合のために、可能であればCMakeビルドシステムに移行することをお勧めします。gradleプラグイン設定の詳細はこちらにあります: https: //sites.google.com/a/Android.com/tools/tech-docs/external-c-builds 。
編集:Android Studio 2.2 Preview 5からcmake
およびndkBuild
グループを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"
}
}
}
編集2:ndkBuild
グループの下のexternalNativeBuild
のラッピングは、ビルドツールのバグが原因で機能しないようです。
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"
}
}
}
注:Gradleを既存のndk-buildプロジェクトにリンクする場合は、cmake {}の代わりにndkBuild {}ブロックを使用し、相対的なAndroid.mkファイルへのパス。 Gradleには、Android.mkファイルと同じディレクトリにあるApplication.mkファイルも含まれます。