有没有办法在AVD模拟器上模拟Android操作系统升级方案?

时间:2017-10-20 10:52:33

标签: android android-emulator apk

我一直在尝试模拟一个场景,我想检查我的Android应用在操作系统更新后的行为方式。但是在我可以运行实际操作系统更新方案的那一刻,我无法访问物理设备,所以我不得不求助于在Android模拟器(AVD)上尝试它。

有没有办法可以在AVD上更新操作系统,就像它是真正的手机一样,并且能够看到我的应用程序的行为方式?

我基本上想要测试的是:

假设我在设备上安装了API级别为21的android。我在其上安装了maxSdkVersion 21的应用。现在我的设备升级到API级别22.我的应用程序会发生什么?

  • 操作系统是否会默默地将我的应用程序卸载并保持这种状态?
  • 操作系统会检查Play商店是否有可用的支持SDK级别的应用程序版本,而是下载并安装它?
  • 操作系统是否至少会给我一个视觉警告或提示该特定应用程序在设备上不兼容,并告诉我接下来可以做什么?

Android Developer Docs建议使用maxSdkVersion不是一个好主意,因为在某些情况下卸载会发生。

  

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

     
    

警告:不建议声明此属性。首先,没有必要将属性设置为阻止将应用程序部署到Android平台的新版本上的方法。通过设计,该平台的新版本完全向后兼容。您的应用程序应该在新版本上正常运行,前提是它只使用标准API并遵循开发最佳实践。其次,请注意,在某些情况下,声明属性会导致应用程序在系统更新后从用户的设备中删除到更高的API级别。大多数可能安装了您的应用程序的设备将通过无线方式定期进行系统更新,因此在设置此属性之前,您应该考虑它们对您的应用程序的影响。

  

我还想弄清楚接下来会发生什么。什么“在某些情况下”本质上意味着什么?

1 个答案:

答案 0 :(得分:1)

我创建了 2 个演示应用程序来使用模拟器检查您的问题。我更新了模拟器的 API 级别并重新启动它,因为每个设备在系统更新后都会重新启动。请观看this视频发生了什么:)

<块引用>

操作系统是否会悄悄卸载我的应用并保持这种状态?

是的应用被卸载

<块引用>

操作系统至少会给我一个视觉警告或提示这 特定的应用程序在设备上不再兼容并告诉我 我接下来可以做什么?

应用在没有任何消息或警告的情况下被卸载

<块引用>

操作系统是否会检查 Play 商店以查看我的应用程序版本是否带有 支持的 SDK 级别可用并下载并安装 取而代之?

我认为这可以检查该应用程序是否在 Play 商店中可用。所以我无法对此进行测试。如果有人知道这个问题的答案,请评论