簡體   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