minSdkVersion≥24时如何强制Android Studio或apksigner使用v1签名
强制开启v1签名的解决方案
1. Gradle 配置(适配Android Studio打包流程)
直接在模块级build.gradle的签名配置块中明确强制开启v1签名,不受minSdkVersion限制,配置示例如下:
android { signingConfigs { release { storeFile file("你的密钥文件路径.jks") storePassword "你的密钥库密码" keyAlias "你的密钥别名" keyPassword "你的密钥密码" // 核心配置:强制开启v1签名 v1SigningEnabled true // 可同时开启v2、v3签名,不影响v1生效 v2SigningEnabled true v3SigningEnabled true } } buildTypes { release { // 确认对应构建类型使用了配置好的签名规则 signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
配置后注意事项:
- 先执行
clean清理项目缓存,再进行打包,避免增量打包导致配置不生效 - 多风味构建场景下,需确认所有风味的签名配置都没有覆盖关闭v1签名的设置
2. apksigner 手动签名的正确参数
你之前使用的--max-sdk-version 23参数仅限制签名适配的最高系统版本,和是否开启v1签名无关,无需添加该参数。正确的签名命令如下:
apksigner sign --ks 你的密钥文件路径.jks \ --ks-key-alias 你的密钥别名 \ --v1-signing-enabled true \ --v2-signing-enabled true \ --out 签名完成后输出的APK路径.apk \ 待签名的原始APK路径.apk
签名完成后执行校验命令确认v1生效:apksigner verify -v 签名完成的APK路径.apk
输出中出现Verified using v1 scheme (JAR signing): true即为配置成功。
常见失效原因排查
- 检查是否有构建插件、多风味配置动态覆盖了
minSdkVersion,同时默认关闭了v1签名 - 不要使用AAB转APK流程的默认签名,部分转码工具会自动忽略v1签名,需手动指定签名参数
- 若使用第三方多渠道打包工具,需确认工具配置中没有默认关闭v1签名的选项
内容的提问来源于stack exchange,提问作者mahdi
相关产品推荐
相关产品推荐

