繁体   English   中英

如何知道我正在使用ndk-build构建哪个API级别?

[英]How to know which API level I'm building for using ndk-build?

我正在尝试更好地理解在使用ndk-build时如何选择api级别。

我知道我可以在Application.mk中明确设置APP_PLATFORM ,否则ndk-build将使用android:minSdkVersion清单中指示的api,但是如果我的应用程序的清单同时包含android:minSdkVersionandroid:targetSdkVersion ,那么这是高于minSdkVersion?

ndk-build会定位targetSdkVersion吗? 我怎么检查呢?

如果它针对更高的api级别,我想我将能够使用仅适用于该级别的本机apis进行构建,但是如果我在具有较低api级别的设备上运行该应用程序,它应该会失败,所以在这种情况下我应该实现某种api级别的检查,这是正确的吗?

使用__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

在定义TARGET_PLATFORM和LOCAL_CFLAGS之后,将此代码放入Android.mk

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:minSdkVersion

运行应用程序的android平台的最低版本。

  • Android:targetSdkversion

指定应用程序设计为运行的API级别。

  • Android:maxSdkVersion

设计应用程序的Android平台的最高版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM