【bug】有时候不能拉起ali一键登录页面 #8
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题描述
小米手机有时候不能拉起ali一键登录页面
重现步骤
安装应用后,登录账号,然后卸载应用。再次编译安装,直接进入了主页,跳过了登录环节。
期望结果
如果插口拉起一键登录页面,否则拉取验证码登录页面
实际结果
直接进入了主页,跳过了登录环节。
环境信息
设备型号: [e.g., Pixel 6]
Android版本: [e.g., Android 13]
App版本: [e.g., v1.2.0]
##日子/截图
Crash日志如下(如有):
修复建议
[可选:如果你有修复思路]
##定位情况
-[]未分析
-[]初步定位,原因:
当应用卸载后 id = SharedPreferencesUtils.getString(Constants.USER_ID,"");
token = SharedPreferencesUtils.getString(Constants.IM_LOGIN_TOKEN,"");
依然有值。
-[]已确定原因,方案:
##验收标准
-[]在相同环境下不在复现
-[]回归测试通过
-[]初步定位,原因:


当应用卸载后 id = SharedPreferencesUtils.getString(Constants.USER_ID,"");
token = SharedPreferencesUtils.getString(Constants.IM_LOGIN_TOKEN,"");
依然有值。
上库链接:http://101.43.95.130:8082/c/zhini_im/+/8
应用卸载重装后依然能读取到用户登录信息的问题分析与解决方案
问题描述
在小米手机上,已经登录账号后卸载应用,然后重新安装应用,发现仍然能够读取到之前的
用户ID和Token信息。理论上卸载应用后,SharedPreferences等本地存储应该被清除了,
但实际情况却并非如此。
日志示例:
2025-12-24 21:26:41.191 32330-32330 renjianboOneClickLoginActivity com.xunpaisoft.social
D id: 1845 token: fy55PMnu5gtDLfOVppNRsnu2rOO5ya9+izmP2X8Ex0GPVMEYR0yiwwKwcrgL4z+cQ5uBIVpYL8Uf+tWKZPsQWrT+8Il63s3L0nFe0ZizsGcCQajZv/Tl/e2HlEKs9avTnJUO1OSYSZ+08PxN6IP8tvw5v04ZxSzmsFLNGHvW9fQ=
问题原因分析
Android自动备份功能已启用
备份规则文件未排除敏感数据
数据恢复机制
小米手机的云服务
数据存储位置
解决方案
方案一:修改备份规则文件(已实施)✅
修改 backup_rules.xml
文件路径:app/src/main/res/xml/backup_rules.xml
修改内容:
说明:
修改 data_extraction_rules.xml
文件路径:app/src/main/res/xml/data_extraction_rules.xml
修改内容:
说明:
方案二:添加安全检测机制(已实施)✅
在 MyApp.onCreate() 中添加了 checkAndClearRestoredData() 方法:
功能说明:
实现代码位置:
app/src/main/java/com/xunpaisoft/social/MyApp.java
关键逻辑:
方案三:完全关闭备份(不推荐)
如果不需要备份任何数据,可以在 AndroidManifest.xml 中设置:
缺点:
技术细节
Android自动备份机制
备份规则文件说明
数据存储位置
AndroidKeyStore机制
注意事项
已备份的数据处理
测试建议
如果问题仍然存在
备份功能的必要性
安全建议
相关文件清单
已修改的文件:
相关配置文件:
数据存储文件:
social_app.xml(SharedPreferences)
config.xml(SharedPreferences)
验证方法
测试步骤
a. 在设备上登录应用
b. 确认能够读取到用户ID和Token
c. 卸载应用
d. 清除应用备份数据(设置 → 备份 → 清除备份)
e. 重新安装应用
f. 检查日志,确认是否还能读取到旧数据
预期结果
如果仍然有问题
总结
问题根源:
Android自动备份功能在未排除敏感数据的情况下,会将用户登录信息备份到云端。
卸载重装后,系统自动恢复这些备份数据,导致能够读取到之前的登录信息。
解决方案:
效果:
建议:
保持当前配置,既保护了敏感数据的安全,又允许备份非敏感数据,是最佳实践。