C++ 11をAndroidに統合するにはどうすればよいですか?
まず、ツールチェーンが「Cross GCC」であることを確認する必要があります。私のLinuxではデフォルトでしたが、MacOSX Lionではそうではありませんでした。
これを行うには、プロジェクトプロパティ> C/C++ビルド>ツールチェーンエディターに移動します。 「Current toolchain」は「Cross GCC」に設定する必要があります。 「互換性のあるツールチェーンのみを表示する」ボックスをオフにする必要がある場合があります。
次に、Android.mkのLOCAL_CFLAGSにオプションを追加します。
LOCAL_CFLAGS := -std=gnu++11
次に、対応する新しいシンボルの場所をEclipseに通知する必要があります(例: "std :: unordered_map")。 「jni」を右クリック>プロパティ> C/C++全般->パスとシンボル->シンボル-> GNU C++に移動し、次のシンボル( 「追加...」をクリックしてください):
Name: __GXX_EXPERIMENTAL_CXX0X__
Value:
(つまり、「値」を空にします)
ここでの主な答えには、C++ 11の実験的サポートが含まれているようです。C++ 11はもはや実験的ではありません。
コマンドラインNDKサポートを使用している場合(IDEAコミュニティエディション13をJava stuff)に使用している場合、これはjni/Application.mk
API 19(OSX ML上)でC++ 11サポートを取得するには:
NDK_TOOLCHAIN_VERSION := 4.8
# APP_STL := stlport_shared --> does not seem to contain C++11 features
APP_STL := gnustl_shared
# Enable c++11 extentions in source code
APP_CPPFLAGS += -std=c++11
gradle-experimental-plugin を使用している場合、これをbuild.gradleファイルで設定することもできます。
Android.ndk {
moduleName = "hello-Android-jni"
stl = "stlport_shared"
cppFlags.add("-std=c++11")
}
最新の gradle-experimental-plugin 0.8.0-alpha4で、app/build.gradleに追加します:
model {
Android {
ndk {
moduleName "native"
CFlags.add("-std=c11") // Enable C11 support
ldLibs.add("log")
}
}
}