【问题标题】:Android NDK Support Version LimitedAndroid NDK 支持版本有限
【发布时间】:2018-01-22 22:11:06
【问题描述】:

我已经使用 Android NDK 多年,然而,最近,我在使用 ndk-build(ndk 版本 15)构建 CPP 时看到了以下消息

Android NDK:不支持 android-9。使用最低支持版本 机器人 14。 Android NDK:警告:APP_PLATFORM android-14 是 高于 android:minSdkVersion 9

为什么 NDK 停止支持低于 android-14 的 Android 级别(3-13)?

我试图在 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

 

【问题讨论】:

  • Gingerbread 的活动设备非常少,支持 Gingerbread 意味着 libandroid_support 之类的东西需要包含更多内容,从而使 APK 膨胀更多。如果您真的想继续支持 Gingerbread,Alex 和 MM S 都会就如何处理这个问题给出很好的建议。

标签: android android-ndk ndk-build


【解决方案1】:

您的问题“为什么”应该向 NDK 团队提出。您可以通过public mail list 询问他们或通过GitHub 提出投诉。

无论如何,目前他们的决定是停止支持旧设备。预计 NDK 的下一个版本将进一步降低平台要求。

有趣的问题是你应该怎么做。如果您比 android-26 更关心 android-9,则可以继续使用旧版本的 NDK。它不会停止工作。它没有有效期。

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

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

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

【讨论】:

    【解决方案2】:

    如果您的应用应该在 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 2019-07-28
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 2011-04-26
      • 1970-01-01
      相关资源
      最近更新 更多