Android应用清除存储后回退至旧版本代码问题求助
问题描述
- 开发Android应用时遇到异常:修改代码后运行能看到最新效果,但清除应用存储后,应用会自动回退到旧版本代码状态:
- 场景1:把按钮背景色从黄色改成蓝色,运行后显示正常;但清除应用存储再打开,按钮又变回黄色,必须重新编译运行才会恢复蓝色。
- 场景2:修改时间格式化代码,从旧代码:
改为:val f = SimpleDateFormat("hh:mm a", Locale.getDefault())
首次运行后时间格式已去掉AM/PM;但清除存储切换账号登录后,时间格式又变回带AM/PM的旧版本,期间代码完全没修改。val f = SimpleDateFormat("hh:mm", Locale.getDefault())
- 开发阶段没加退出登录功能,测试不同账号必须清除存储,每次都要重新编译,效率极低。
可能的原因及解决办法
1. 关掉Instant Run/Apply Changes功能
Android Studio的Instant Run(新版叫Apply Changes)是为了快速更新代码,但有时候会把旧代码片段留在设备缓存区,清除应用存储时就会触发这些残留代码运行。
- 操作步骤:
- 打开Android Studio,进入
File > Settings > Build, Execution, Deployment > Instant Run(新版在Build, Execution, Deployment > Deploy里找Apply Changes相关选项) - 取消勾选
Enable Instant Run to hot swap code/resource changes on deploy(或对应新版的启用选项) - 点
Apply后重启Android Studio,重新编译运行应用。
- 打开Android Studio,进入
2. 清理构建缓存并重新编译
Android Studio的构建缓存可能存了旧的编译产物,导致清除存储后旧代码被加载。
- 操作步骤:
- 点击顶部工具栏的
Build > Clean Project - 再点
Build > Rebuild Project - 重新运行应用到设备上。
- 点击顶部工具栏的
3. 彻底卸载应用后重装
设备上可能残留了旧版本的APK(比如debug和release版本混存,或者旧缓存APK),清除存储时触发了旧APK启动。
- 操作步骤:
- 在设备上长按应用图标,选
卸载,确认完全删掉 - 回到Android Studio,点
Run重新编译安装。
- 在设备上长按应用图标,选
4. 排查本地存储的配置残留
虽然你是硬编码修改的代码,但如果之前有把UI配置(比如按钮颜色、时间格式)存到SharedPreferences或本地文件里,清除存储时可能误读了旧配置?可以排查下:
- 检查代码里有没有把按钮颜色、时间格式字符串写入SharedPreferences或本地文件的逻辑
- 如果有,要么同步更新这些存储的配置,要么在应用启动时强制用硬编码的新配置覆盖旧的。
内容的提问来源于stack exchange,提问作者Het Shukla
相关产品推荐
相关产品推荐

