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

标签 android c++ c android-ndk android-manifest

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

我知道我可以在 Application.mk 中显式设置 APP_PLATFORM,否则 ndk-build 将以 android:minSdkVersion list 中指示的 api 为目标,但如果我的应用程序的 list 同时包含 android:minSdkVersionandroid:targetSdkVersion,并且高于 minSdkVersion 怎么办?

ndk-build 会以 targetSdkVersion 为目标吗?我该如何检查?

如果它针对更高的 api 级别,我想我将能够使用仅适用于该级别的 native api 进行构建,但是如果我在具有较低 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

关于android - 如何知道我正在为使用 ndk-build 构建哪个 API 级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11660575/

相关文章:

android - 无法在行 xml 中设置 listView 行高的高度

Android 距离错误

java - 如何从线程触发 PropertyChange 事件?

c# - 单声道并传递 unicode 字符串

c++ - 在没有 C 的情况下使用 C++

c - 如何在 C 中将循环字符串读入另一个更大的字符串

php - Android 从 mysql JSON 数据填充微调器

c++ - GetAdaptersInfo 崩溃

c - 在 Devc 中打印

c - 如何清理 char* 的静态返回数组?