android apk的重新签名
android apk的重新签名?
http://zhengjunwei2007.blog.163.com/blog/static/35297942201222741713492/
?
用到的工具:
java -jarsignapk.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的动态签名技术。
?
?
?