¿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?
- QNetworkAccessManager - primero GET muy lento
- Mapa de progreso de Android gradle experimental plugin
- ¿Por qué Android utilizó el concepto de Java en lugar de lenguaje D o C o C ++? Pero el navegador web Chromium está en C ++, su partido muy complicado
- ¿Utilizar un archivo mapeado en memoria como un archivo de intercambio?
- Android clang LLVM errores indefinidos
¿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?
- Convierta C.jstring a cadena nativa en Go
- OpenMP en iOS / Android
- Optimización de un dibujo VBO enorme en dispositivos Android / iOS
- Desarrollo de procesamiento de audio Little Endian SDK con NDK
- Temporalmente, deshabilitar programaticamente la rotación de pantalla en Qt
- JNI / Android: llamada a un método no estático en Java desde C ++?
- Superpowered SDK Android
- ¿Se admiten objetos Array Vertex de ES OpenGL en cualquier emulador 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