首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不更新目标NDK平台有什么好处吗?

不更新目标NDK平台有什么好处吗?
EN

Stack Overflow用户
提问于 2018-11-26 07:57:40
回答 2查看 813关注 0票数 3

我正在维护一个(相对较老的) Android应用程序,它使用NDK构建的库来实现一些功能。它最初是为NDK平台9级构建的。

我一直在尝试使构建基础设施现代化,作为其中的一部分,我使用了更新的SDK和NDK版本,这些版本放弃了对NDK平台9的支持(现在的最低版本是16)。

不是更新我们构建的目标NDK和/或不更新到最新的NDK平台级别(目前为28),还是在发布新的NDK时更新NDK目标平台级别总是一个好主意?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-27 22:55:33

提高NDK级别的唯一缺点是,这等同于minSdkVersion。如果你增加你的minSdkVersion,你就会放弃对旧设备的支持。

NDK本身只在API级别有少量用户时才放弃对它们的支持。API 16级及以上占所有用户的99%以上。如果由于某种原因,您的应用程序的使用编号显示了姜饼或ICS上的大量用户,则需要坚持使用较旧的NDK来继续支持这些设备。

升级minSdkVersion的好处是,您可以访问更多的API,可以测试的配置更少(考虑到旧设备可能会有更多的问题,这可能会大大减少所需的工程工作量)。

正确的API级别将因应用程序而异(尽管有趣的是有一个提供合理建议的twitter帐户)。检查您的使用编号,看看您的用户在哪里,并在支持旧版本所带来的困难之间取得平衡。如果你的应用程序是一个高保真度的游戏,那么Jelly设备很可能无法以任何合理的性能运行你的应用程序,所以支持这些设备是没有意义的。

票数 2
EN

Stack Overflow用户

发布于 2018-11-26 09:02:29

也许,使用“适当的”NDK版本是一个更好的选择,而不是坚持太旧的NDK版本。使用“捕捉时间”NDK版本的优点之一是可以适应advantages 以及随着Android版本的演变而对编译器进行的改进。例如。

  • GCC不再得到支持。它在NDK r18中被删除。
  • 对ARMv5 (armeabi)、MIPS和MIPS64的支持已被删除。尝试构建任何这些ABI将导致自r17以来的错误。

而且,对于每个新版本,几乎总是会有一些bug修复和安全性增强。就我个人而言,我不认为坚持旧版本的NDK有多大的附加值。

不是更新我们构建的目标NDK有什么好处吗?

也许不更新NDK版本的好处是使您的项目与那些即将消失的历史设备兼容,将很快消失。

您可以查看NDK的发行说明以了解其演变。历史

对于您对armeabi-v7a的关注,下面是https://developer.android.com/ndk/guides/abis#v7a的官方说法。

-编辑 --

为了澄清以下几点:

  • NDK修订:每个修订版通常添加/删除特性和支持的平台。目前最新的修订版是r18b。与r16b相比,它去除了android-14android-15的平台。
  • minSdkVersion:在模块级build.gradle文件的defaultConfigproductFlavors块中设置build.gradle属性。这将确保您的库只被安装在运行适当版本Android的设备上的应用程序使用。
  • ANDROID_PLATFORM CMake变量:该变量用于指定目标CMake平台的名称。例如,android-18指定了Android4.3 (API级别18)。您有两个选项来配置您正在构建的安卓平台,一个是CMake变量,另一个是miniSdkVersion。还请注意,CMake有自己的逻辑来选择最佳的平台版本,而不一定等于所述的minSdkVersion
代码语言:javascript
复制
1. If there exists a platform version for the ABI equal to `minSdkVersion`, CMake uses that version.
2. Otherwise, if there exists platform versions lower than `minSdkVersion` for the ABI, CMake uses the highest of those platform versions. This is a reasonable choice because a missing platform version typically means that there were no changes to the native platform APIs since the previous available version.
3. Otherwise, CMake uses the next available platform version higher than `minSdkVersion`.

因此,当您升级您的NDK修订版,并再次检查您所需的安卓平台是否存在于NDK平台目录中,例如android-ndk-r16b/platforms

参考资料:https://developer.android.com/ndk/guides/cmake

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53476794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档