Habilitar excepción C ++
Estoy tratando de hacer APP código nativo para Android. El código nativo está en cplusplus. Siempre que intento hacer, aparece el siguiente error.
H236Plus.cpp: 135: error: manejo de excepciones inhabilitado, use -fexceptions para habilitar
- make: *** No se han especificado objetivos y no se ha encontrado ningún makefile. Detener
- Cada compilación NDK es una reconstrucción completa
- Creación de Android SDK: solo se ha creado un objetivo de Android
- Dalvik / CleanSpec.mk: 47: *** separador faltante. Detener. Error del edificio AOSP
- Android-ndk Adición de bibliotecas estáticas al android.mk
¿Cómo utilizo -fexceptions para habilitar el manejo de excepciones, y dónde lo uso?
- ¿Cómo funciona la dependencia de módulos en Android?
- Cómo obtener el valor de la variable de entorno en Android.mk?
- Construir objeto compartido de C ++ al crear un proyecto de Android en Eclipse
- Cómo escribir el sello de tiempo de construcción en apk
- Guardar vista como mapa de bits, sólo obtener pantalla en negro
- Agente de bambú: no encontró la herramienta de compilación revisión 23.0.3
- Condiciones de Android.mk
- gcc disable -Wall flag para archivos / carpetas específicos
Necesita crear con NDK personalizado de CrystaX. Tiene libstdc ++ completo, RTTI y soporte de excepciones. Es generalmente la mejor herramienta para el desarrollo de Android que conozco.
Depende del tiempo de ejecución que esté utilizando. Si no está utilizando el tiempo de ejecución del sistema y está construyendo con ndk-build
, agregue cualquiera de ellos al archivo Android.mk:
- LOCAL_CPP_FEATURES + = excepciones (recomendado)
- LOCAL_CPPFLAGS + = -fexceptions
Además, puede agregar la siguiente línea a su archivo Application.mk:
- APP_CPPFLAGS + = -fexceptions
Hay más información en docs/CPLUSPLUS-SUPPORT.html
en su carpeta NDK
-fexception es un conmutador de compilador. Su uso dependerá de la configuración del compilador. Qué compilador estas usando? IDE? Herramienta de construcción
En los indicadores del compilador, agregue -fexception en su Makefile.
Con la última versión de Android Studio esto es lo que mi build.gradle se parece a:
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" } } }
He resuelto este problema mediante la adición de cFlags "-fexceptions" en la sección ndk de script build.gradle, como esto:
ndk { ... cFlags "-fexceptions" }
- Obtener permisos de lectura y publicación en una solicitud
- No se puede instanciar la clase android.support.v7.widget.SearchView