[英]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:minSdkVersion
和android: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.