我已经使用Android NDK多年了,但是,最近,当我使用ndk-build(ndk版本15)构建CPP时,我看到了以下消息
Android NDK:不支持android-9。使用最低支持版本 Android的14。 Android NDK:警告:APP_PLATFORM android-14是 高于android:minSdkVersion 9
为什么NDK停止支持Android级别(3-13)低于android-14?
我试图找出为什么在NDK指南,https://developer.android.com/ndk/guides/stable_apis.html虽然我仍然不知道。似乎NDK仍支持高于或等于3级。
我还猜到我在c ++中需要的一个标志或功能可能会导致这种情况。但是,到目前为止,我甚至找不到任何线索。
LOCAL_CPP_FEATURES := rtti exceptions
APP_CPPFLAGS += -std=c++11
APP_STL := gnustl_static
答案 0 :(得分:1)
如果您的应用应该在android-9
上运行,请不要更新NDK 15版根据NDK修订历史(https://developer.android.com/ndk/downloads/revision_history.html),
不再支持Android 2.3(android-9)。最低API级别 NDK中的目标现在是Android 4.0(android-9)。如果你的 APP_PLATFORM设置低于android-14,而是使用android-14。
答案 1 :(得分:1)
你的问题'为什么'应该发给NDK团队。您可以在public mail list询问他们,或在GitHub处投诉。
无论如何,目前他们的判决是停止支持旧设备。期待下一版NDK进一步降低平台要求。
有趣的问题是你应该怎么做。如果您关心 android-9 远远超过 android-26 ,您可以继续使用旧版本的NDK。它不会停止工作。它没有到期日期。
通常,Android保留向后兼容性:如果应用程序是为platform-X构建的,它将在platform-(X + n)上运行(可能在兼容模式下)。
另一方面,NDK的新版本具有重要的错误修复,包括安全修复程序。新设备(例如平台'O')可能在运行使用旧NDK编译的二进制文件时遇到问题。当然,旧的NDK不会让您访问仅在高级平台上可用的新功能。
因此,上传两个不同的APK可能是值得的 - 一个目标SDK = 9,另一个最小SDK = 21(您的数字可能会有所不同)。 Play商店允许为不同平台(和ABI)维护单独的APK。您应该只关注版本代码策略,然后您的用户将及时收到他们的更新 - 那些坚持使用Eclair的人,以及那些升级到Nougat的人。