Android签名V1 V2的实现流程

流程图

flowchart TD
    A[生成密钥库] --> B[生成密钥]
    B --> C[将密钥库与项目关联]
    C --> D[生成APK文件]
    D --> E[签名APK]

详细步骤

下面是实现Android签名V1 V2的详细步骤:

步骤 操作 代码
1 生成密钥库 keytool -genkey -v -keystore my-key.keystore -alias my-alias -keyalg RSA -keysize 2048 -validity 10000
2 生成密钥 keytool -genkeypair -v -keystore my-key.keystore -alias my-alias -keyalg RSA -keysize 2048 -validity 10000
3 将密钥库与项目关联 在项目的 build.gradle 文件中添加如下代码:<br>android {<br>  ...<br>  signingConfigs {<br>    release {<br>      storeFile file("my-key.keystore")<br>      storePassword "密钥库密码"<br>      keyAlias "密钥别名"<br>      keyPassword "密钥密码"<br>    }<br>  }<br>}<br>在需要签名的构建类型中添加 signingConfig "release":<br>android {<br>  ...<br>  buildTypes {<br>    release {<br>      ...<br>      signingConfig signingConfigs.release<br>    }<br>  }<br>}
4 生成APK文件 在项目根目录下执行以下命令:<br>./gradlew assembleRelease
5 签名APK 在项目根目录的 app/build/outputs/apk/release 目录中找到生成的 APK 文件,使用如下命令进行签名:<br>jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-key.keystore app-release-unsigned.apk my-alias

代码解释

生成密钥库

keytool -genkey -v -keystore my-key.keystore -alias my-alias -keyalg RSA -keysize 2048 -validity 10000
  • -genkey:生成密钥库
  • -v:输出详细信息
  • -keystore my-key.keystore:指定生成的密钥库文件名为 my-key.keystore
  • -alias my-alias:指定别名为 my-alias
  • -keyalg RSA:使用 RSA 算法
  • -keysize 2048:密钥长度为 2048
  • -validity 10000:有效期为 10000 天

生成密钥

keytool -genkeypair -v -keystore my-key.keystore -alias my-alias -keyalg RSA -keysize 2048 -validity 10000

与生成密钥库相似,但使用了 -genkeypair 命令来生成密钥对。

将密钥库与项目关联

android {
    ...
    signingConfigs {
        release {
            storeFile file("my-key.keystore")
            storePassword "密钥库密码"
            keyAlias "密钥别名"
            keyPassword "密钥密码"
        }
    }
}

android {
    ...
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}

在项目的 build.gradle 文件中,我们使用 signingConfigs 块来定义签名配置。其中,release 是我们自定义的名称,可以根据需要修改。

在 signingConfigs.release 中,我们指定了密钥库文件的位置 storeFile file("my-key.keystore"),密钥库密码 storePassword,密钥别名 keyAlias,以及密钥密码 keyPassword

然后,在需要签名的构建类型(例如 release)中,我们把 signingConfig 设置为 signingConfigs.release。