2017-08-15 106 views
3

我已经使用的Android NDK多年,然而,最近,我看到了下面的时候我建的CPP使用NDK建造(NDK版本15)的Android NDK支持版本有限公司

的Android NDK消息:Android的9不受支持。使用最低支持版本 android-14。 Android的NDK:警告:APP_PLATFORM的android-14是比Android 高:9级的minSdkVersion

为什么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

姜饼有非常少的活动设备,并支持姜饼意味着像libandroid_support这样的东西需要包括更多,因此更多的APK。如果你真的想继续支持Gingerbread,Alex和MM S都会给出如何处理这个问题的建议。 –

回答

0

不更新版本NDK 15,如果你的应用程序应该在Android-9

运行根据NDK修订历史记录(https://developer.android.com/ndk/downloads/revision_history.html),

的Android 2.3(安卓-9)不再支持。 NDK中的最低API级别 目标现在是Android 4.0(android-9)。如果您的 APP_PLATFORM设置为低于android-14,则会改为使用android-14。

1

你的问题'为什么'应该发给NDK团队。您可以通过public mail list询问他们,也可以打电话GitHub

无论如何,现在他们的判决是停止支持旧设备。预计NDK的下一个版本将进一步削减平台需求。

有趣的问题是你应该怎么做。如果你关心的话,你可以继续使用旧版本的NDK。它不会停止工作。它没有到期日期。

通常情况下,Android会保留向后兼容性:如果应用程序是为platform-X构建的,它将在平台(X + n)上运行(可能处于兼容模式)。

另一方面,新版本的NDK有重要的错误修复,包括安全修复。新设备(例如平台'O')在运行使用旧NDK编译的二进制文件时可能会遇到问题。当然,旧的NDK不会让您访问仅在高级平台上可用的新功能。

因此,上传两个不同的APK(一个目标SDK = 9,另一个最小SDK = 21(您的数字可能不同))可能是值得的。 Play商店允许为不同平台(和ABI)维护单独的APK。您应该小心版本代码策略,然后您的用户将及时收到更新 - 那些坚持使用Eclair的用户以及那些升级到牛轧糖的用户。