Android Target API - 如何测试我能走多低?

Posted

技术标签:

【中文标题】Android Target API - 如何测试我能走多低?【英文标题】:Android Target API - How to test how low I can go? 【发布时间】:2016-08-25 11:35:32 【问题描述】:

我正要发布一个应用程序(至少给朋友和家人)。 我的项目 API 级别是:

minSdkVersion 19
targetSdkVersion 23

当人们即将开始努力时,我经常听到这个问题;

我应该针对什么 API 级别?

我显然已经过时了 - 使用 19 作为minSdkVersion 将适用于我的大多数目标受众。

我想知道的是这个;我不确定我编写的代码是否真的需要 SDK 级别 19。我想我可以在不修改 minSdkVersion 以外的任何内容的情况下覆盖更多的受众。

但是我不确定如何测试它。我可以简单地尝试降低它直到 Gradle 抛出构建错误吗?如果应用程序构建,它是否保证工作?我似乎在任何地方都找不到此信息。

【问题讨论】:

【参考方案1】:

嗯,这完全取决于您计划在应用中拥有哪些功能。 你必须具备哪些基本功能(列出一个详尽的清单)才能让你的应用程序做它应该做的事情。

每个 SDK 版本都带有一些附加功能。其中一些带有支持库,即使在一些早期的 API 级别中也可以使用该功能。

如何测试我能走多低?

好吧,至少你不能低于所有依赖项允许的范围。假设您使用的几个库需要至少 11、14 和 17,那么您不能低于 17。这是一个上限。在这里,您需要处理支持库。例如,Fragment 与 11 一起发布,但使用支持库,您可以在姜饼和 froyo 中使用它。所以,上限价值进一步降低!

我如何获得这个上限值?

理想情况下,在开始开发之前。写下您需要哪些功能以及实现它们需要哪些库/类。找到支持它们的最低 api 级别。你有它。现在,由于您已经完成了该应用程序,并且您并不真正打算为尽可能多的设备发布它,因此继续降低 gradle 是您可以做的最省时的事情。

【讨论】:

那我就有答案了;在 Gradle 产生错误之前,继续降低 SDK 级别是安全的。我对此非常怀疑,因为在收到错误uses-sdk:minSdkVersion 8 cannot be smaller than version 9 declared in library [com.google.android.gms:play-services-location:8.4.0] 之前我可能会降到 8 级。毕竟从 9 到 19 是 10 个 API 级别。 它应该可以工作。不过,最好先在 API 级别 9 的设备上测试应用程序。 所以仅仅因为 Gradle 接受了一些较低的 API 级别,并不能保证它的工作原理是一样的? 有时,gradle 运行干净,但应用程序在设备上运行时崩溃。因此,无错误的 gradle 并不总是能保证应用程序正常运行。例如,检查这个问题:***.com/questions/32328806/… 我有一个类似的问题。我的最低 API 级别是 17,我的 gradle 运行良好,但是当我在模拟器上运行应用程序时,它在 kitkat 及以下设备上不断崩溃。但是,从棒棒糖开始,该应用程序运行平稳。

以上是关于Android Target API - 如何测试我能走多低?的主要内容,如果未能解决你的问题,请参考以下文章

android:targetSdkVersion更新引发的“惨案”

如何使用 Target API 23 及更高版本通过 GPS 获取用户位置

Google Play Target API 级别要求

将图片保存到共享图片文件夹 android target api 29

如何通过Android CTS测试

错误记录Android Studio 编译时 lint 检查报错 ( Error: Google Play requires that apps target API level 29 or )