Android Studio生成已签名.apk被锁定无法修改,如何关闭相关限制?
问题根因
你观察到的APK类只读锁定现象并非Windows文件系统的权限限制,本质是Android 7.0引入的*APK签名方案v2(全APK签名)*的特性:
- v2/v3级别的签名会对APK的全部内容块做哈希校验,任意修改APK内容(包括替换证书重签)都会破坏原有签名校验,修改后的APK如果没有重新执行v2签名就会无法安装,看起来就像APK被锁定不可修改
- 你通过
attrib命令查询到仅存在A(归档位)标记,也验证了不存在文件系统层面的只读限制
Gradle/Android Studio配置解决方案
如果需要生成支持对方二次修改重签的APK,直接在模块级build.gradle的签名配置中关闭v2、v3签名即可,仅保留兼容所有Android版本的v1签名:
android { signingConfigs { release { // 原有签名配置保持不变:keyAlias、keyPassword、storeFile、storePassword keyAlias '你的密钥别名' keyPassword '你的密钥密码' storeFile file('你的密钥文件路径') storePassword '你的密钥库密码' // 新增以下配置,关闭v2、v3签名 v1SigningEnabled true v2SigningEnabled false v3SigningEnabled false } } // 注意要让release构建类型使用上面的signingConfig配置 buildTypes { release { signingConfig signingConfigs.release } } }
- 修改配置后重新打包生成的APK,对方可以正常修改内容并重签名,无锁定限制
- 如果你后续需要对外发布APK到应用商店,建议重新开启v2/v3签名,安全性更高
无需修改打包配置的兼容方案
如果你不想调整自己的打包配置,可以让对方在重签时使用官方apksigner工具做完整的v1+v2签名,即可正常修改APK后重签,参考命令:
apksigner sign --ks 你的密钥库路径 --ks-key-alias 你的密钥别名 修改后的.apk
内容的提问来源于stack exchange,提问作者Naib
相关产品推荐
相关产品推荐

