勾选记住密码时Android Studio生成签名APK提示Cannot Recover Key如何解决
Android Studio 签名APK记住密码功能失效修复方案
- 第一步:清理已缓存的签名密码
关闭Android Studio后,根据你的操作系统删除对应缓存条目:- Windows:打开「凭据管理器」,找到所有名称包含
Android Studio、android.keystore的凭据条目全部删除;同时进入C:\Users\<你的用户名>\.AndroidStudio<对应版本号>\options\目录,删除或重命名security.xml文件 - Mac:打开「钥匙串访问」,搜索
Android Studio、keystore相关条目全部删除;同时进入~/Library/Application Support/Google/AndroidStudio<对应版本号>/options/目录,删除或重命名security.xml文件 - Linux:进入
~/.AndroidStudio<对应版本号>/options/目录,删除或重命名security.xml文件
重启Android Studio后重新勾选记住密码打包一次验证是否恢复。
- Windows:打开「凭据管理器」,找到所有名称包含
- 第二步:升级/降级Android Studio到稳定版本
2024年上半年推送的Iguana | 2023.2.1初始版、Hedgehog | 2023.1.1后续补丁版存在签名密码记住功能失效的已知官方bug,可直接升级到Jellyfish | 2023.3.1及以上稳定版,或降级到2023年12月之前发布的稳定版即可修复。 - 第三步:使用本地属性文件配置签名(更稳定的替代方案)
可以放弃Android Studio自带的记住密码功能,通过Gradle配置实现自动签名,避免每次手动输入密码:- 在项目根目录新建
keystore.properties文件,写入如下内容:
storePassword=你的密钥库密码 keyPassword=你的密钥密码 keyAlias=你的密钥别名 storeFile=你的密钥库文件绝对路径/相对项目根目录的路径- 打开Module级的
build.gradle文件,在android块上方添加读取逻辑,同时配置签名规则:
// 读取签名配置文件 def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file("keystore.properties") if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android { ... signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { release { ... signingConfig signingConfigs.release } } }- 把
keystore.properties添加到项目的.gitignore文件中,避免密钥信息上传到代码仓库。配置完成后,每次选择release构建变体即可自动完成签名,无需手动输入密码,跨设备使用时只需同步该配置文件即可。
- 在项目根目录新建
- 第四步:关闭AS设置同步的密码同步选项
如果开启了Android Studio的设置跨设备同步功能,密码同步模块偶发缓存冲突会导致记住的密码失效,进入File > Settings > System Settings > Settings Sync(Mac为Android Studio > Settings > System Settings > Settings Sync),取消勾选Passwords同步项后重新配置记住密码即可。
内容的提问来源于stack exchange,提问作者Barakonda
相关产品推荐
相关产品推荐

