把Android系统签名弄成jks

2022-08-31 16:51:14 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

一、应用使用系统签名

假设我们得到了系统签名文件:platform.pk8、platform.x509.pem,还需要一个用于签名的文件:signapk.jar,这里提供了一份下载连接,可供练习使用:链接:https://pan.baidu.com/s/1OiBcVyhZVqTulb6HXwcqHA 提取码:7g81

有时候我们找系统提供商要系统签名时,可能给的文件很多,如下:

其实真正只需要用到platform.pk8、platform.x509.pem即可。

不同的系统,系统签名是不一样的,所以你们下载我的这个签名文件是用不到你的系统上的,但是signapk.jar是通用的,什么系统签名都可以使用他。

当你有你的系统签名文件时,如何把一个apk签名为系统签名呢?如下:

  1. 把platform.pk8、platform.x509.pem、signapk.jar、app.apk放到同一个目录下
  2. CMD进入到上面的目录中,然后输入如下命令:
代码语言:javascript复制
java -jar signapk.jar platform.x509.pem platform.pk8 app.apk app_signed.apk

注:这里app.apk就是你的App,此App不论是有签名还是没签名都是可以的,通过上面的命名后,签名就会变成系统的签名了。

这有一篇文章:应该是需要在Linux系统下进行操作的:https://blog.csdn.net/georgebindragon/article/details/106253192

注:一个应用要想使用系统签名,还需要在清单文件中设置一个属性,如下:

代码语言:javascript复制
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="android.uid.system">

我们使用adb命令安装一个没有签名的apk

代码语言:javascript复制
adb install unsigned.apk

此时会报错,如下:

代码语言:javascript复制
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

INSTALL_PARSE_FAILED_NO_CERTIFICATES翻译过来就是:安装解析失败,没有证书(签名)

使用adb命令安装一个有系统签名的apk,但是安装到一个不匹配的android系统上,会报错如下:

代码语言:javascript复制
Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE翻译过来就是:安装失败,共享用户不兼容(其实说的就是系统签名与所安装的手机不兼容)

二、把系统签名弄成jks签名文件

1、把platform.pk8、platform.x509.pem放在同一个目录下,然后cmd中进入这个目录。 2、生成platform.pem,输入如下命令:

代码语言:javascript复制
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

如果提示没有openssl命令,则需要先安装openssl,下载地址:http://slproweb.com/products/Win32OpenSSL.html,一般我们下载64位的exe,且容量大的那个,如下:

预防下载连接失效,这里也提供一个百度网盘下载:链接:https://pan.baidu.com/s/1gFpPMwfwCTpty7xCdiEZ2A 提取码:1234

安装后之后,把安装目录下的bin目录设置到path环境变量中即中。

3、生成platform.p12,命令如下:

代码语言:javascript复制
openssl pkcs12 -export -in  platform.x509.pem -out platform.p12 -inkey  platform.pem -password pass:123456 -name key0

注:这里的123456为密码,key0为别名,可以自行设置。 4、生成platform.jks,命令如下:

代码语言:javascript复制
keytool -importkeystore -deststorepass 123456 -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 123456

注:这里有两个123456,都是密码,与前一步设置的密码保持一致。

这一步,会报出一个警告,如下:

Warning: JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore ./platform.jks -destkeystore ./platform.jks -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。

可以忽略它,也可以按它说的输入那个命令:

代码语言:javascript复制
keytool -importkeystore -srckeystore ./platform.jks -destkeystore ./platform.jks -deststoretype pkcs12

到这里,我们就有了一个platform.jks的系统签名文件了,以后打包apk就像平常那样打包即可,可以把debug的签名也设置为这个,这样在AndroidStudio中可以直接运行apk来调试。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151996.html原文链接:https://javaforall.cn

0 人点赞