【发布时间】:2017-10-20 10:52:32
【问题描述】:
我一直在尝试模拟一个场景,我想检查我的 Android 应用在操作系统更新后的行为方式。但是我目前无法访问物理设备,我可以运行实际的操作系统更新场景,所以我不得不求助于在 android 模拟器 (AVD) 上进行尝试。
有没有一种方法可以让我在 AVD 上更新操作系统,就像它是一部真正的手机一样,并且能够看到我的应用的行为方式?
我主要想测试的是:
假设我在设备上安装了 API 级别 21 的 android。我安装了一个带有maxSdkVersion 21 的应用程序。现在我的设备升级到 API 级别 22。我的应用会怎样?
- 操作系统会静默卸载我的应用并保持这种状态吗?
- 操作系统是否会与 Play 商店核对,以查看我的应用程序版本是否可用,并且支持 SDK 级别,然后下载并安装它?
- 操作系统是否会至少给我一个视觉警告或提示这个特定应用程序不再在设备上兼容,并告诉我下一步该怎么做?
Android Developer Docs 建议使用 maxSdkVersion 不是一个好主意,因为在某些情况下会发生卸载。
在其清单中声明 maxSdkVersion="5" 的应用程序已在 Google Play 上发布。设备运行 Android 1.6(API 级别 4)的用户下载并安装应用程序。几周后,用户会收到 Android 2.0(API 级别 5)的无线系统更新。安装更新后,系统会检查应用程序的 maxSdkVersion 并成功重新验证。应用程序正常运行。但是,一段时间后,该设备收到了另一个系统更新,这次是 Android 2.0.1(API 级别 6)。更新后,系统无法再重新验证应用程序,因为系统自身的 API 级别 (6) 现在高于应用程序支持的最大值 (5)。系统会阻止用户看到该应用程序,实际上是将其从设备中删除。
警告:不建议声明此属性。首先,无需将属性设置为阻止将应用程序部署到新版本的 Android 平台上,因为它们已发布。根据设计,该平台的新版本完全向后兼容。您的应用程序应该在新版本上正常工作,前提是它只使用标准 API 并遵循开发最佳实践。其次,请注意,在某些情况下,声明该属性可能导致您的应用程序在系统更新到更高的 API 级别后从用户的设备中删除。大多数可能安装您的应用程序的设备都会通过无线方式定期接收系统更新,因此您应该在设置此属性之前考虑它们对您的应用程序的影响。
我还想弄清楚接下来会发生什么。 “在某些情况下”本质上是什么意思?
【问题讨论】:
-
你找到答案了吗?我需要模拟 Android 升级,但没有任何运气。
-
@JorgeCevallos 在下面看到我的回答
标签: android android-emulator apk