在工作中我们经常会提供接口给客户调用,我们就需要提供jar给客户调用,客户那边使用就都需要系统的签名才能正常运行。而如果我们想用Android Studio单独开发某个应用而使用系统签名的时候,有两种开发的方式,一种是编译完成后,使用SignApk.jar来进行签名,另外一种是把系统的pemplatform.pk8和platform.x509转换成为Android Studio常用的 .keystore文件,编译时候自动签名。
Android系统签名证书的目录是“build/target/product/security”。
一、SignApk.jar签名
1、工具下载地址:链接:https://pan.baidu.com/s/1cLQFMFyRzCuTxP99QiEG0A 提取码:ck2g
2、拿到终端上系统的签名(由定制系统的厂商提供):
3、在应用程序的项目中配置:
androidManifest.xml中添加android:sharedUserId=“android.uid.system”
1 2 3 4 5 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xxxx.xxxx" android:sharedUserId="android.uid.system"> </manifest> |
4、将(机器)系统的签名放到signapk同一个目录中
5、AndroidStudio通过build–> 生成带有签名的apk,将程序apk放到signapk同一个目录中:


6、在signapk所在文件夹中运行命令行:
为应用程序配置系统的签名:
解释: 第一个xxx.apk是项目打包后的apk, 第二个xx.apk被系统签名后的apk。
1 | work\tools\signapk>java -jar signapk.jar platform.x509.pem platform.pk8 app-release.apk app-releasetest.apk |
结果提示:
1 | Usage: signapk publickey.x509[.pem] privatekey.pk8 input.jar output.jar |
再次调整未被系统签名的apk的路径,将apk拖动放到命令行中,重新输入:
1 | work\tools\signapk>java -jar signapk.jar platform.x509.pem platform.pk8 G:\wangqi\work\tools\signapk\app-release.apk app-release-test.apk |
7、 最终效果如下:
被系统签名后的apk如下:
二、转换为 .keystore文件
keytool-importkeypair下载地址:https://github.com/getfatday/keytool-importkeypair
1、蒋keytool-importkeypair下载下来的文件拷贝到Linux中,然后再拷贝platform.pk8 和 platform.x509.pem文件到keytool-importkeypair目录下面

2、使用如下命令来执行:
1 | /keytool-importkeypair-master$ ./keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform |

3、修改 build.gradle 再次编译即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | signingConfigs { release { storeFile file('keystore/platform.keystore') keyAlias 'platform' keyPassword 'android' storePassword 'android' } debug { storeFile file('keystore/platform.keystore') keyAlias 'platform' keyPassword 'android' storePassword 'android' } } |