我一直在尝试模拟一个场景,我想在操作系统更新后查看我的Android应用程序的行为.但是在我可以运行实际操作系统更新方案的那一刻我无法访问物理设备,所以我不得不求助于在Android模拟器(AVD)上尝试它.
有没有办法可以在AVD上更新操作系统,就像它是真正的手机一样,并且能够看到我的应用程序的行为方式?
我本质上想要测试的是:
假设我在设备上安装了API级别为21的android.我安装了一个maxSdkVersion21 的应用程序.现在我的设备升级到API级别22.我的应用程序会发生什么?
在Android开发者文档建议使用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级别后将应用程序从用户的设备中删除.大多数可能安装应用程序的设备将通过无线方式定期进行系统更新,因此在设置此属性之前,应考虑它们对应用程序的影响.
我还想弄清楚接下来会发生什么.什么"在某些情况下"本质上意味着什么?
我正在尝试编写代码以读取嵌套的JSON并打印项目。后来我打算从中生成一个菜单。
JSON内容如下:
{
"label": "Root of Menu",
"child": [
{
"label": "Menu 1",
"child": [
{
"label": "Menu 1.1",
"child": [
{
"label": "Menu 1.1.1"
},
{
"label": "Menu 1.1.2"
}
]
},
{
"label": "Menu 1.2",
"child": [
{
"label": "Menu 1.2.1"
},
{
"label": "Menu 1.2.2"
}
]
},
{
"label": "Menu 1.3",
"child": [
{
"label": "Menu 1.3.1"
},
{
"label": "Menu 1.3.2"
}
]
}
]
},
{
"label": "Menu 2",
"child": [
{
"label": "Menu …Run Code Online (Sandbox Code Playgroud)