Android系统签名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android系统签名相关的知识,希望对你有一定的参考价值。

参考技术A 有时候,我们开发的apk需要用到系统权限,需要在androidManifest.xml中添加共享系统进程属性:

这时候apk的签名就需要是系统签名(platform、shared或media)才能正常使用。
常用系统签名方式

这种方式比较麻烦,你需要有编译过的源码环境,并按如下步骤:
1、拷贝App源码到Android源码的packages/apps/目录下,且App源码是普通(Eclipse)格式的
2、配置Android.mk,在其中添加

3、使用mm编译App,生成的apk即系统签名

这种方式比在源码环境下签名简单,App可以在Eclipse或Android Studio下编译,然后给apk重新签名即可。
但这种方式在频繁调试的时候比较痛苦,即使写成脚本,也需要重复一样的操作。
相关文件
platform.x509.pem、platform.pk8、signapk.jar

文件位置
platform.x509.pem、platform.pk8:

signapk.jar:

signapk源码路径:

签名命令

步骤

1、将相关文件及源apk文件置于同一路径下
2、检查源apk包,去掉META-INF/CERT.SF 和 META-INF/CERT.RSA 文件
3、执行签名命令即可

让Android Studio集成系统签名,需要用到一个工具 keytool-importkeypair ,详见下文。

这个工具的作用是将系统签名的相关信息导入到已有的签名文件里。

工具的使用方法可以通过–help或README.textile来寻求帮助

platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh

我的做法是在App根目录新建Signature文件夹专门存放签名相关文件。
步骤

1、生成demo.jks签名文件

2、编写签名脚本signature.sh,内容如下:

为脚本文件添加可执行权限:

执行脚本:

3、配置builde.gradle

在android区域下(与defaultConfig同级)添加配置:

这样debug或release apk就带有系统签名了。

如果想直接Run app就是release版且带系统签名的apk,还需修改:

这样直接Run app就是带系统签名的release版apk了。

Android Studio支持系统签名(证书)

让Android Studio集成系统签名,需要用到一个工具keytool-importkeypair

这个工具的作用是将系统签名的相关信息导入到已有的签名文件里。可从这里下载。

相关文件
platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks
我的做法是在App根目录新建Signature文件夹专门存放签名相关文件。

步骤
1、生成demo.jks签名文件

相关文件
platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks
我的做法是在项目根目录新建Sign文件夹专门存放签名相关文件。

如图:

步骤一:

步骤二:

 

步骤三:

 ps:图片上的密码要和命令的密码对应,别名Alias也要对应起来,还有路径,其他信息是次要的

这个步骤后,可以在对应的位置生成一个demo.jks文件

步骤四:

注意: 

利用生成的应用签名文件生成新的系统签名文件

内容如下:
注意!!一定要把这个文件放到linux环境下编译,我这边没有装Linux系统,因此我使用到的是Git;

步骤五:

在项目根目录新建的Sign文件夹右击选择 Git Bash Here 打开工具

 步骤六:命令行执行以下命令

#!/bin/sh
 
# 转换平台签名命令
./keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo
 
# demo.jks : 签名文件
# 123456 : 签名文件密码
# platform.pk8、platform.x509.pem : 系统签名文件
# demo : 签名文件别名

执行到这里提示:导入时存在现有条目别名 demo, 是否覆盖? [否]:  导入新的别名    (按回车以取消对此条目的导入);这里我们需要输入与上面新建应用签名一致的别名:例如:demo;进行覆盖

步骤七:

 到此处系统签名文件生成完成;

这里就是最新的系统签名文件;

引用进行打包就可以了。

注:应用系统打包签名需要在清单文件中添加:

 

以上是关于Android系统签名的主要内容,如果未能解决你的问题,请参考以下文章

Android apk 系统签名

android 系统签名

Android 系统签名

让Android Studio支持系统签名

让Android Studio支持系统签名

Android实践 -- 对apk进行系统签名