观察到Android应用程序的这种非常奇怪的行为。大概情况:
- 设备上安装的版本A
- 申请工作还可以
- 设备上安装的版本B(B> A)
- 申请工作还可以
- 设备因电池电量耗尽而关闭
- 设备已开启
- 应用程序的版本A再次在设备上运行
附加信息:
- 该应用程序不是通过Google Play分发的,而是通过USB连接在本地安装的(注意:该应用程序在生产环境中运行;它不是通过AndroidStudio安装的)。
- 亭
- Android 5.1(API 22)
我想我有两个问题:
- 为什么设备缓存了旧版本的APK(以及它在哪里缓存)?
- 在什么情况下应用程序可以回滚到以前的版本?
编辑(更多信息):
- 好像在APK回滚后,应用程序失去了一些权限(甚至是所有权限)。由于从Android的API抛出SecurityException,所以回滚停止工作之前起作用的功能。即使此版本的Android还没有运行时权限,也会发生这种情况!
- 浏览平板电脑的文件系统之后,我确实看到几个应用程序的居住的APK在类似的路径:
/data/app/com.myapp-2/base.apk,/data/app/com.myapp-3/base.apk,等。
我目前的假设是电池耗尽会导致平板电脑“重置”其状态(例如,时钟也会重置),并且在再次通电时,它会混淆应用的APK之间并加载错误的APK。
但是,我不知道为什么会这样做,或者如何防止这种行为。