Android生成系统签名文件jks

场景:

  • 我们很多应用需要用到系统签名,可以通过生成系统签名文件,在生成apk时使用这个签名,然后可以安装到机器中,不需要放在源码里编译,重新刷系统。
  • 系统apk,特别是定制方案,将apk生成后,还需要收到进行命令脚本用系统签名一次,再放到系统源码里面编译。太麻烦了。

解决方案:
生成.签名文件jks,直接放在AS里面,生成apk时候就已经是系统签名。这个时候直接install安装或者直接放到系统源码里面编译都行的。

具体实施方案
1)先找到签名相关的包,资源,源码位置:

build/target/product/security     就是这个security文件夹里面的内容

在这里插入图片描述
2)实现方式

  • mac、ubuntu环境一致的,自带了相关的签名生成的各种包。
  • windows需要下载 签名工具和安装环境
    步骤一:进入security目录,生成临时文件platform.pem
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

步骤二:
接着执行以下命令,将在目录下生成platform.p12文件,它本质上应该就是一个数字证书

openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:huld123 -name huld

生成platform.p12文件,其中huld 为alias名(app添加签名要用到),huld123 为密码。

步骤三:

keytool -importkeystore -deststorepass huld123 -destkeystore platform.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass huld123

生成platform.jks (app打签名最终用到的文件),其中-deststorepass huld123设置的是这个签名的密码,上面指令中的-src*的其他参数都是从前面两个指令中生成的。

这样就生成了.jks 签名文件
常规部署签名文件就简单了:

signingConfigs {
    main {
        storeFile file("./key/platform.jks") //签名文件路径
        storePassword "huld123"
        keyAlias "huld"
        keyPassword "huld123"
    }
}

特别说明:
mac 环境配置和ubuntu处理方式一模一样的,最终需要只有两个文件;windows平台一样,需要两个文件再生成其它必要的文件进行签名。

platform.pk8     platform.x509.pem

如果是windows处理,根据自己的系统和软件配置,看是否需要安装opensll keytool 两个不可少的工具,也可以实现。

其它方式:
如果,我手动签名,怎么实现。
驱动工程师一般会提供给App开发人员一个签名工具,或者就给App开发人员两个文件,app开发人员拿到签名的signapk.jar。然后App开发人员自己写脚本就行。

platform.pk8     platform.x509.pem

在这里插入图片描述

签名工具下载地址

具体实施操作:

  • 写一个签名脚本 signed_apk.bat
    脚本内容:
@echo off
echo 程序开始执行,请等待.......
java -jar signapk.jar platform.x509.pem platform.pk8   app-debug.apk   MYLauncher.apk
pause & exit

准备好原apk,运行脚本即可生成新的签了系统签名的apk

你可能感兴趣的:(深入理解Android,系统签名,jks,android)