无法同时使用签名方案v1和v2问题 & 不同环境使用不同签名文件自动打包配置

Android资源文件local.properties使用以及Gradle文件中的值、Manifests文件中的值

1、没有v1签名问题

从Android Studio项目中生成一个签名的apk,但是当同时启用签名方案v1和v2时,APK签名方案v1似乎不起作用,v1似乎失效了,apksigner -verify -v返回:

Verifies
Verified using v1 scheme (JAR signing): false
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): false
Number of signers: 1

可以单独使用v1或v2进行验证。

app支持的最低API级别太高minSdkVersion>=24(android 7),
只有minSdkVersion<=23(android 6),才支持v1签名。

注:只有v2签名的apk,包体中不含签名文件。只有v1签名或v1+v2签名的apk,包体中有签名文件CERT.SF、Cert.RSA

2、不同环境(sit/uat/prd)使用不同签名文件自动打包

2.1、在与app文件夹同级目录下添加3个文件:sitstore.properties, uatstore.properties, prdstore.properties

prdstore.properties

APP_KEY_ALIAS=testKey
APP_KEY_PASSWORD=test123456
APP_STORE_FILE=../keystore/testkey.keystore
APP_STORE_PASSWORD=test123456

2.2、配置build.gradle(app)


Properties keyProperties = new Properties()

android {
	...
	
    productFlavors {
        sit {
            ...
			
            keyProperties.load(project.rootProject.file('sitstore.properties').newDataInputStream())
        }

        uat {
            ...
			
            keyProperties.load(project.rootProject.file('uatstore.properties').newDataInputStream())
        }

        prod {
            ...
			
            keyProperties.load(project.rootProject.file('store.properties').newDataInputStream())
        }
    }


    /**
     * 签名信息
     */
    signingConfigs {
        config {
            keyAlias keyProperties.getProperty("APP_KEY_ALIAS")
            keyPassword keyProperties.getProperty("APP_KEY_PASSWORD")
            storeFile file(keyProperties.getProperty("APP_STORE_FILE"))
            storePassword keyProperties.getProperty("APP_STORE_PASSWORD")
        }
    }


    /**
     * 不同版本
     */
    buildTypes {
        release {
            ...
			
            signingConfig signingConfigs.config
        }

        debug {
            ...
			
            signingConfig signingConfigs.config
        }

        unsignedRelease {
		    ...
			
            signingConfig null
        }
    }

}

3、查看签名信息方法

jarsigner/apksigner详细使用方式

3.1、jarsigner

jarsigner -verbose -keystore keystore文件 -signedjar 签名以后的apk名称 要签名的apk  keystore中的别名

只能查看含v1方式签名的apk

3.2、apksigner

apksigner sign --ks keystore位置 --v3-signing-enabled false apk位置

可以查看使用了v1v2v3哪种签名方案,无法查看签名文件信息

3.3、解压查看

(1)将apk解压

(2)找到META-INF 下的.RSA文件

(3)在控制台上输入命令:"keytool -printcert -file xxx.RSA",即可查看签名文件
keytool -printcert -file xxx.RSA

只能查看含v1方式签名的apk

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KillerNoBlood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值