Как узнать, какой уровень API я создаю для использования ndk-build?

Я пытаюсь лучше понять, как работает выбор уровня api при использовании ndk-build.

Я знаю, что я могу явно установить APP_PLATFORM в Application.mk , и в противном случае ndk-build будет нацеливаться на api, указанную в манифесте, на android:minSdkVersion , но что, если манифест моего приложения имеет android:minSdkVersion и android:targetSdkVersion , и это Выше, чем minSdkVersion?

Будет ли ndk-build нацеливаться на targetSdkVersion ? И как я могу это проверить?

В случае, если он нацелен на более высокий уровень api, я предполагаю, что я смогу построить с использованием родной apis, доступной только для этого уровня, но если я запустил приложение на устройстве с более низким уровнем api, он должен был бы терпеть неудачу, поэтому в этом случае я Должен реализовывать некоторую проверку уровня api, это правильно?

Поместите этот код в свой Android.mk сразу после определения TARGET_PLATFORM и 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 

Теперь вы можете проверить это в коде C / C ++:

 #if defined( ANDROID9 ) // do stuff for API Level 9 #endif 

Используйте __ANDROID_API__ определенный в $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

Минимальная версия платформы Android, на которой будет запущено приложение.

  • Android:targetSdkversion

Указывает уровень API, на котором приложение предназначено для запуска .

  • Android:maxSdkVersion

Максимальная версия платформы Android, на которой приложение предназначено для запуска.