apk系统签名和发布软件签名的理解

88 篇文章 1 订阅
74 篇文章 1 订阅

本人理解apk签名有两种情况,一个是系统签名,一个是发布apk软件到应用市场时的签名,下面说说两者的区别

apk系统签名:是将apk签名成为系统应用,系统应用是不允许被用户卸载的,具有系统进程权限root权限,系统开发经常会将一些apk嵌入 到安卓系统里去编译成系统应用,就像打电话应用,这个应用就是系统应用,是用户卸载不了的


apk发布签名:发布签名是为了验证身份,发布到应用市场首先会判断包名,应用市场里的所有apk都不允许有相同包名的apk,一旦有那么还会验证签名,签名不一致就认为是恶意攻击,拒绝发布;签名一致就认为是版本升级


签名方法:

首先得安装jdk1.7配置好java命令的环境变量,使用命令格式 java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk对apk进行系统签名.命令中signapk.jar在系统代码的out\host\linux-x86\framework目录下,它是编译产生的,需要对系统源码进行编译生成,它的源码在build\tools\signapk\目录;platform.x509.pem(公钥文件)在系统代码build\target\product\security\目录下,platform.pk8(含有公钥的文件)也在这个目录下;old.apk就是需要被签名的apk文件;new.apk就是签名之后的apk文件;命令中的文件最好都使用绝对路径;以上这是通过signapk工具进行签名,其实还可以通过在Eclipse中配置Custom debug keystore,运行时就自动签名了,不需要每次使用命令去签名了;目前公司使用的debug.keystore虽然和C盘.Android目录下的debug.keystore名字一样但是本质有区别;原因是某些apk运行调试时必须使用正式签名,这样很麻烦,可以将正式签名的.keystore文件赋值一份修改成一份自定义调试keystore证书,但是这个keystore文件的密码和alias(别名)以及alias密码都是有规定的,keystore文件密码必须是android,别名必须是androiddebugkey,alias别名密码必须是android;一般开发APP不会使用到android.uid.system这个属性,因为google不会提供这样的系统签名文件给你,各个手机平台系统也是定制的,系统签名文件不会是一样的,除非是自己编译的系统;总结:一句话,使用了android.uid.system这个属性就必须使用目标系统签名,否则无法运行root权限,也就不具有系统进程权限了;关于apk签名其实有两种方式:第一种是通过keytool命令手动生成或者从Eclipse自动生成keystore文件,然后使用jarsigner工具对apk进行签名;还有一种方式就是使用signapk工具来进行apk签名;这两个方式的区别就是前者使用keystore文件,后者使用x509.pem和pk8文件进行签名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值