Android 签名配置,查看签名信息

本文详细介绍了Android应用签名的配置过程,包括在build.gradle中设置自动签名打包,使用jarsigner和apksigner进行签名,以及如何验证签名。此外,还特别提到了Android R版本对签名的新要求,即resources.arsc必须未压缩且4字节对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gradle 自动签名打包

配置build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"
    defaultConfig {
        applicationId "com.blowing.signer"
        minSdkVersion 15
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        release {
            keyAlias 'dev'
            keyPassword  '283315'
            storeFile file('../dev.jks')
            storePassword '283315'
        }
        debug {
            keyAlias 'dev'
            keyPassword '283315'
            storeFile file('../dev.jks')
            storePassword '283315'
        }

    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

生成无签名的release包

  1. 可以点击AS 右侧的gradle ->app->build> assemble
  2. ./gradlew assemble

生成签名的release 包

./gradlew assembleRelease

查看密钥库

keytool -list -v -keystore debug.keystore


签名

1.方法一(jarsigner)

用JDK7及以上jarsigner签名,不支持Android 4.2 以下

jarsigner -keystore debug.keystore MyApp.apk androiddebugkey
用JDK7及以上jarsigner签名,兼容Android 4.2 以下
jarsigner -keystore debug.keystore -digestalg SHA1 -sigalg SHA1withRSA MyApp.apk androiddebugkey

2.方法二(apksigner,默认同时使用V1和V2签名)

进入Android SDK/build-tools/SDK版本, 输入命令

apksigner sign --ks 密钥库名 --ks-key-alias 密钥别名 xxx.apk

若密钥库中有多个密钥对,则必须指定密钥别名
apksigner sign --ks 密钥库名 --ks-key-alias 密钥别名 xxx.apk

禁用V2签名

apksigner sign --v2-signing-enabled false --ks 密钥库名 xxx.apk
参数:
–ks-key-alias 密钥别名,若密钥库有一个密钥对,则可省略,反之必选
–v1-signing-enabled 是否开启V1签名,默认开启
–v2-signing-enabled 是否开启V2签名,默认开启

例如:
在debug.keystore密钥库只有一个密钥对

apksigner sign --ks debug.keystore MyApp.apk

在debug.keystore密钥库中有多个密钥对,所以必须指定密钥别名

apksigner sign --ks debug.keystore --ks-key-alias androiddebugkey MyApp.apk

3.签名验证

1.方法一(keytool,只支持V1签名校验)
进入JDK/bin, 输入命令

keytool -printcert -jarfile MyApp.apk (显示签名证书信息)
参数:
-printcert 打印证书内容
-jarfile 已签名的jar文件 或apk文件

2.方法二(apksigner,支持V1和V2签名校验)
进入Android SDK/build-tools/SDK版本, 输入命令

apksigner verify -v --print-certs xxx.apk

参数:
-v, --verbose 显示详情(显示是否使用V1和V2签名)
–print-certs 显示签名证书信息

例如:

apksigner verify -v MyApp.apk
        Verifies
        Verified using v1 scheme (JAR signing): true
        Verified using v2 scheme (APK Signature Scheme v2): true
        Number of signers: 1

4. Failed parse during installPackageLI: Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary]

Android R 要求resources.arsc 不被压缩,那么我们签名的就不能只有v1,需要使用v2

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值