安卓清单文件中需要设置最大值吗?

3
我的ionic应用程序在Android清单中目标为24,最低为16,无最大值。
当我在firebase上运行时,设置为24或25的设备会导致致命崩溃。
我的应用程序是否需要最大值以避免崩溃?或者这是否限制了它在新API设备上的支持?
此外,在Android Studio中,当您首次尝试设置项目并选择目标时,它会告诉您Play商店中__%的人使用该目标,因此24少于1%。那么,如果我的目标是24,这是否意味着只有1%的商店能够使用我的应用程序?
这是我的API 23应用程序在25设备上崩溃的情况: enter image description here 这是我的API 24应用程序在24设备上崩溃的情况: enter image description here

1
根据我的经验,设置最大sdk级别并不是惯例。也许你应该更深入地调查这些崩溃情况,并实际修复它们,而不是避免它们?此外,随着更多用户升级设备或购买新设备,这些PI级别的使用百分比将会增加,因此说“只有1%的设备具有此API级别”并没有什么用,除非你在谈论即将过时的旧版API级别。 - Karakuri
1个回答

2

我看到您有些困惑,让我们先搞清楚它们在 Android 中的含义。

android:targetSdkVersion

通过这个属性,您告诉 Android 您正在针对哪个 SDK 进行开发。重要的是,它告诉系统该属性与 SDK 级别相匹配,系统不需要启用任何行为来维护兼容性。

您的应用仍然可以在旧版本上运行(最低版本为 minSdkVersion)。

android:minSdkVersion

顾名思义,这是运行应用所需的最低 SDK 版本,如果试图安装应用的设备具有较低的 SDK 版本,则系统将阻止该过程。

需要注意的是,如果您在更新中提高了 minSdkVersion,所有已安装应用并且不再符合此属性的用户将无法再使用应用程序。

android:maxSdkVersion

同样,属性名称就是含义。这是设备可以拥有的最大 Sdk 版本,以便运行应用。

请注意文档中的以下内容:

在其清单中声明 maxSdkVersion="5" 的应用在 Google Play 上发布。 运行 Android 1.6(API 级别 4)的设备的用户下载并安装应用程序。几周后,用户收到了 Android 2.0(API 级别5)的 OTA 系统更新。安装更新后,系统检查应用程序的 maxSdkVersion 并成功重新验证它。应用程序正常运行。然而,一段时间后,设备再次接收到系统更新,这次更新为 Android 2.0.1(API 级别 6)。更新后,系统无法再次验证应用程序,因为系统自身的 API 级别(6)现在比应用程序支持的最大级别(5)更高。系统防止应用程序对用户可见,实际上将其从设备中删除。

就是这样。 还要查看此处的文档


当您首次尝试设置项目并选择目标时,Android Studio 还会告诉您 Play 商店中有多少人使用该目标,因此 24 小于 1%。所以如果我的目标是 24,那么只有 1% 的商店能够使用我的应用程序吗?

实际上不是这样,您必须考虑 minium 和 max 才能找出有多少市场百分比可以使用您的应用程序。这只是说明有多少人(以百分比表示)拥有该 SDK 版本。


关于崩溃

我很确定问题与 SDKVersion 无关,也许您应该发布一些日志以便更详细地回答。

希望对您有所帮助 :)


谢谢您的解释!我刚刚在上面发布了我的错误和崩溃情况,如果能得到帮助,将不胜感激,因为我对这种情况感到非常困惑。 - SaH
@SaH,你正在尝试访问一个空对象,这是一个空指针。尝试进行调试 :) - Sid
谢谢您的回复,但是说实话,我不知道如何在Firebase测试实验室或Java中调试某个东西。我的应用程序是Ionic版本,它没有引用任何Ionic代码,所以我对于如何进行调试感到很困惑。另外,API 23在API 23设备上工作得很好,这显然没有多大意义。 - SaH
我的应用程序的代码全部都是HTML/CSS/JS,没有使用任何本地Java。 - SaH
@SaH 其实没有任何代码示例,很难知道是什么原因导致了这个问题。 - Sid
好的,谢谢。由于我不知道是什么导致了这个问题,因为没有Java代码,所以我不知道可以发送哪些代码片段。你做过像ionic这样的混合应用程序吗?是否曾经遇到过这样的问题?我使用一些cordova插件,但我非常怀疑它们是导致这个问题的原因。 - SaH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接