Android 打包系统签名(.pk8、.pem) app

Android系统签名的制作涉及到使用Java密钥库(Java Keystore)格式的文件来存储签名信息。
场景:要求基于系统方案商提供了的Android系统进行产品开发
提供内容:Android 系统,系统签名(.pk8,.pem),接口文档等等
文章重点:
1.使用 signapk.jar 和相关文件来生成签名
2.如何把 .pk8.pem 这样的系统签名文件生成 app 开发过程中 build.gradle 可使用的 storeFile ?

  • 获取系统签名文件
    • 从系统源码环境中获取制作系统签名所需的相关文件,通常在 build/target/product/security/ 目录下,可以找到 platform.pk8platform.x509.pem 这两个文件
    • 获取 signapk.jar,它通常位于 /out/host/linux-x86/framework/ 目录下
  • 制作签名 app
    • 使用 signapk.jar 和相关文件来生成签名
      运行命令 java -jar signapk.jar platform.x509.pem platform.pk8 xxx.apk xxx_sign.apk 来签名APK文件
    • 使用 jks 制作签名 app
      • storeFile 制作

        @echo 即将为您把系统签名转成 APP 可用的 .jks 签名文件
        
        set sys_pk8="D:\xxx\xxx\platform.pk8"
        set sys_x509_pem="D:\xxx\xxx\platform.x509.pem"
         
        set out_name=sign_debug.jks
        set out_alias="signdebug"
        set out_password=123456
         
        set openssl="D:\xxx\xxx\Git\usr\bin\openssl.exe"
        set keytool="D:\xxx\xxx\Java\jre1.8.0_251\bin\keytool.exe"
         
        @echo 正在使用 Git 的 openssl 将 pk8 解密为 pem 文件, 此时将会生成一个 signdebug.pem 文件
        %openssl% pkcs8 -inform DER -nocrypt -in %sys_pk8% -out signdebug.pem
         
        ::将两个pem 文件导入 platform.p12 文件中,
        ::并设置 别名(keyAlias)为:signdebug 和 密码(keyPassword)为:123456 (别名和密码可自定义),且同时会新生成 platform.p12
        %openssl% pkcs12 -export -in %sys_x509_pem% -inkey signdebug.pem -out platform.p12 -password pass:%out_password% -name %out_alias%
         
        ::使用 keytool 将之前生成的 platform.p12 导入 sign_debug.jks 签名中,并设置 storePassword 密码(123456)
        ::此时需要正确提供 keyPassword 密码
        ::此时即生成了需要的 sign_debug.jks 签名文件
        %keytool% -importkeystore -deststorepass 123456 -destkeystore %out_name% -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass %out_password%
         
        ::查看生成的 签名信息
        %keytool% -list -v -keystore %out_name%
        pause
        
        
      • build.gradle 配置

        android {
            compileSdkVersion 30
            buildToolsVersion "30.0.2"
        
            defaultConfig {
                applicationId "com.itaso.xxx"
                minSdkVersion 23
                targetSdkVersion 30
                versionCode 1
                versionName "1.0.0"
        
                testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        
                signingConfigs {
                    debug {
                        storePassword 'storePassword'
                        keyAlias 'keyAlias'
                        keyPassword 'keyPassword'
                        storeFile file('../xxx.keystore')
                    }
                    release {
                        storePassword 'storePassword'
                        keyAlias 'keyAlias'
                        keyPassword 'keyPassword'
                        storeFile file('../xxx.keystore')
                    }
                    sign_debug{
                        storePassword '123456'
                        keyAlias 'signdebug'
                        keyPassword '123456'
                        storeFile file('../sign_debug.jks')
                    }
                }
            }
        
            buildTypes {
                release {
                    minifyEnabled false
                    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                    signingConfig signingConfigs.release
                }
                debug {
                    minifyEnabled false
                    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                    signingConfig signingConfigs.sign_debug
                }
            }
            compileOptions {
                sourceCompatibility JavaVersion.VERSION_1_8
                targetCompatibility JavaVersion.VERSION_1_8
            }
        }
        ......
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值