如何知道我正在使用 ndk-build 构建哪个 API 级别?
How to know which API level I'm building for using ndk-build?
我试图更好地理解在使用ndk构建时api级别的选择是如何工作的。
我知道我可以在Application.mk中显式设置APP_PLATFORM
,否则ndk构建将使用android:minSdkVersion
针对清单中指示的api,但如果我的应用程序清单同时具有android:minSdkVersion
和android:targetSdkVersion
,并且这高于minSdkVersion,该怎么办?
ndk是否将目标构建为targetSdkVersion?我该怎么查?
如果它的目标是更高的api级别,我想我将能够使用仅适用于该级别的本地api进行构建,但如果我在具有较低api级别的设备上运行应用程序,它应该会失败,所以在这种情况下,我应该实现某种api级别检查,这是正确的吗?
使用$NDK/platforms/android-<level>/<abi>/usr/include/android/api-level.h
中定义的__ANDROID_API__
#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_FLAGS 之后,将此代码放入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平台的最大版本。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 在Windows 10上使用Visual Studio 2019构建的Tesseract API c ++程序在Wind
- 如何构建与操作系统隔离的节点插件api
- 使用 Bazel (Windows) 构建 Tensorflow 的问题 => 使用 Tensorflow C++ API
- 无法在窗口中构建 Tensorflow C++ API
- 如何在 go 中调用带有 .lib 和.dll文件的预构建 API
- 从Win32 API C 获取OS构建版本
- 使用tensorflow的C++ API构建错误
- 如何在C++(头文件)中构建私有和公共 API
- 如何知道我正在使用 ndk-build 构建哪个 API 级别?
- 如何使用 QJSEngine 构建 API
- 构建一个RESTFul C++api来与Python接口
- 在google-api-cpp-client中构建专门的服务api
- 如何在VS2010中构建Interactive Brokers API c++测试套接字客户端?
- 如何构建c++ Windows API程序,如c# WinForms
- 将Linux c++ API构建为Windows DLL
- 从c++应用程序自动构建Lua api