当前位置: 代码迷 >> Android >> android apk的从新签名
  详细解决方案

android apk的从新签名

热度:104   发布时间:2016-05-01 11:31:56.0
android apk的重新签名

android apk的重新签名?

http://zhengjunwei2007.blog.163.com/blog/static/35297942201222741713492/

?

用到的工具:

java -jar
signapk.jar
公钥私钥
adb.exe install

?

?

?

参考的文章:

?

http://blog.163.com/yi_yixinyiyi/blog/static/136286889201132531017406/

?

http://my.oschina.net/zhangqingcai/blog/35849

?

http://blog.sina.com.cn/s/blog_4a0876a00100tkbg.html

?

http://hi.baidu.com/bobobry/blog/item/49813c6d312578e442169409.html

?

?

?

SignApk.jar是一个已包含在Android平台源码包中的工具。如果要使用SignApk.jar,你需要创建一个带有对应证书/公钥的私钥。而你可以使用Openssl来创建私钥/公钥对。

?

?

?

签名:
java -jar signapk.jar platform.x509.pem platform.pk8 MyDemo.apk MyDemo_signed.apk 得到具有对应权限的APK

查看是否签名过:

?

jarsigner -verify xxx.apk

?


优化APK:
zipalign -v 4 MyDemo_signed.apk MyDemo_new.apk

查循APK是否优化过:
zipalign -c -v 4 MyDemo.apk

?

?

?

一个需要重新签名的场景:

?

目的:
调用settings,并实现自己的动作。
技术难点:
自己的apk需要和settings为同一个签名才能调用。
实现思路:
卸载settings package, 删除settings中的签名,使用和自己apk同样的签名, 安装settingsapk,再安装自己的apk, 达到自己的apk调用settings的apk。
?
具体做法:
adb uninstall com.android.settings
用解压工具打开apk(不解压)
找到META-INF目录
删除CERT.RSA和CERT.SF
保存并退出压缩工具
?
重新签名
keytool -genkey -alias android123.keystore -keyalg RSA -validity 20000 -keystore android123.keystore
或者使用:
java -jar signapk.jar shared.x509.pem shared.pk8 phone.apk phone_sined.apk

?

?

?

什么是pre-installapk

就是Android系统预装的一些应用,例如Messaging、Contacts、Calendar等等。

pre-install apk的签名方式

给apk签名的一般方法有两种,一种是在Eclipse里使用“Android Tools -> Export SignedApplication Package…”这种方式签名;另一种是用命令行签名。这里就不详细描述了。

而pre-install apk的签名比较特殊,使用源码中的默认签名。可以查看Android的源代码得知。

$ signapkpublickey.x509[.pem] privatekey.pk8 input.jar output.jar

其中,*.x509.pem为x509格式公钥,pk8为私钥。

?

设计思路是这样的:首先apk其实就是一个压缩包,我们可以将其用rar解压出来,那么我们都数据怎样放入apk呢?其实只要把数据(电子书文件)放到安卓的assets目录即可,android端只要读取assets中的文件显示出来即可。但是如果只是修改assets,会发现当再次打包成apk时,程序不能运行。这是因为apk一旦修改就必须要更新数字签名才可以使用。可以到网上下载SignAPK.jar的jar包,实现了android的动态签名技术。

?

?

?

  相关解决方案