I am trying to make APP native code for Android. The Native code is in cplusplus. Whenever I try to make, the following error appears.
H236Plus.cpp:13
with the latest version of Android Studio this is what my build.gradle looks like:
model {
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
buildTypes {
release {
minifyEnabled false
shrinkResources false
proguardFiles.add(file("proguard-rules.txt"))
signingConfig = $("android.signingConfigs.release")
}
}
defaultConfig {
applicationId "my.android.app"
minSdkVersion.apiLevel 16
targetSdkVersion.apiLevel 23
versionCode 29
versionName "my.latest.version"
}
ndk {
moduleName "jni-utils"
ldLibs.add("log")
cppFlags.add("-std=c++11")
cppFlags.add("-fexceptions")
stl "gnustl_static"
}
}
android.signingConfigs {
create("release") {
storeFile "C:\\Android\\Git\\MyProject\\keystore\\keystoreCommon"
storePassword "put you password here"
keyAlias "put your alias here"
keyPassword "put your password here"
}
}
}
I solved this problem by adding cFlags "-fexceptions" into ndk section of build.gradle script, like this:
ndk {
...
cFlags "-fexceptions"
}
You need to build with CrystaX's custom NDK. It has full libstdc++, RTTI and exceptions support. It's generally the best tool for Android development I know.
It depends on what runtime you are using. If you are not using system runtime and are building with ndk-build
, you add any of these to your Android.mk file:
Also, you can add the following line to your Application.mk file:
There's more information in docs/CPLUSPLUS-SUPPORT.html
in your NDK folder
-fexception is a compiler switch. How you use it depends on your compiler setup. What compiler are you using? IDE? build tool?
In the compiler flags add -fexception in your Makefile.