¿Cómo saber qué nivel de API estoy construyendo para usar ndk-build?
Estoy tratando de entender mejor cómo funciona la selección del nivel de api cuando se utiliza ndk-build.
Sé que puedo establecer explícitamente APP_PLATFORM
en Application.mk y que de otra manera ndk-build apuntará la api indicada en el manifiesto con android:minSdkVersion
, pero ¿y si el manifiesto de mi aplicación tiene android:minSdkVersion
y android:targetSdkVersion
, y esto es superior a minSdkVersion?
- OpenCV Android - No se puede resolver la función JNI correspondiente
- NFC API para Android NDK
- Casting un tipo largo de C ++ a un jlong de JNI
- Compatible con la biblioteca de redes C y Java
- Android: Java, C o C ++?
¿Ndk-build segmentará targetSdkVersion ? ¿Y cómo puedo comprobar eso?
En caso de que apunte al nivel más alto de api, supongo que seré capaz de construir usando nativos apis sólo disponible para ese nivel, pero si ejecuto la aplicación en un dispositivo con un menor nivel de api debe miserablemente fallar, por lo que en ese caso yo debe implementar algún tipo de comprobación de nivel de api, ¿es correcto?
- Relocalizaciones de texto a pesar de-fPIC?
- Conversión YUV a RGB y visualización utilizando opengl es 2.0 de android ndk usando shaders
- Tipo de plataforma Qt Check: Móvil o Escritorio
- no se puede encontrar el símbolo "__android_log_write" - Registro nativo de Android
- Depurar biblioteca nativa en Android
- Qt Android: ¿Por qué se crea QtApp-debug.apk para una versión de Release?
- ¿Biblioteca de sonido nativa en Android que puede cambiar de tono?
- Error al crear un buffer de protocolo con el NDK de Android
Ponga este código en su Android.mk
justo después de definir TARGET_PLATFORM y LOCAL_CFLAGS
ifeq ($(TARGET_PLATFORM),android-7) LOCAL_CFLAGS += -DANDROID7 else ifeq ($(TARGET_PLATFORM),android-8) LOCAL_CFLAGS += -DANDROID8 else ifeq ($(TARGET_PLATFORM),android-9) LOCAL_CFLAGS += -DANDROID9 endif endif endif
Ahora puede comprobar esto define en su código C / C ++:
#if defined( ANDROID9 ) // do stuff for API Level 9 #endif
Utilice __ANDROID_API__
definido en $NDK/platforms/android-<level>/<abi>/usr/include/android/api-level.h
#if __ANDROID_API__ >= 21 // building with Android NDK Native API level 21 or higher posix_fadvise64(fd, ...); #else // building with Android NDK Native API level 20 or lower syscall(__NR_arm_fadvise64_64, fd, ...); #endif
-
Android:minSdkVersion
La versión mínima de la plataforma android en la que se ejecutará la aplicación.
-
Android:targetSdkversion
Especifica el nivel de API en el que está diseñada la aplicación .
-
Android:maxSdkVersion
La versión máxima de la plataforma Android en la que está diseñada la aplicación.
- IntelliJ y el android java docs
- Java.lang.SecurityException: Requiere el permiso ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION