C ++ 11をAndroidに統合するにはどうすればよいですか?
4 に答える
ここでの主な答えにはC++11の実験的なサポートが含まれているようで、C++11はもう実験的ではありません。
コマンドラインNDKサポートを使用している場合(Java用にIDEAコミュニティエディション13を使用しています)、jni/Application.mk
API19(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
まず、ツールチェーンが「CrossGCC」であることを確認する必要があります。Linuxではデフォルトでしたが、MacOSXLionではありませんでした。
これを行うには、[プロジェクトのプロパティ]> [C /C++ビルド]>[ツールチェーンエディター]に移動します。「現在のツールチェーン」は「 CrossGCC」に設定する必要があります。[互換性のあるツールチェーンのみを表示する]チェックボックスをオフにする必要がある場合があります。
次に、Android.mkのLOCAL_CFLAGSにオプションを追加します。
LOCAL_CFLAGS := -std=gnu++11
次に、対応する新しいシンボル( "std :: unordered_map"など)の場所についてEclipseに通知する必要があります。「jni」>プロパティ>C/C++一般->パスとシンボル->シンボル->GNUC ++を右クリックし、次のシンボルを追加します(「追加...」をクリックして)。
Name: __GXX_EXPERIMENTAL_CXX0X__
Value:
(つまり、「値」を空にします)
gradle-experimental-pluginを使用している場合は、 build.gradleファイルでこれを設定することもできます。
android.ndk {
moduleName = "hello-android-jni"
stl = "stlport_shared"
cppFlags.add("-std=c++11")
}
最新のgradle-experimental- plugin0.8.0-alpha4を使用して、 app/build.gradleに追加します。
model {
android {
ndk {
moduleName "native"
CFlags.add("-std=c11") // Enable C11 support
ldLibs.add("log")
}
}
}