开发中,Apk签名是一件不大也不小的事,如果你做过微博
相关的开发,你可能遇到如下情景:
用Eclipse或者AS直接点run生成的apk跑在手机上根本不能授权成功,每次需要导出release版本,很烦.
如果你基于系统源码开发或者二次开发系统预置App,你的流程可能是:
mm 或者 mmm 编译出apk,之后再push 到/system/app/ 下,或者用adb install -r 安装到手机.
否根本无法安装,因为签名不一样.
因此我搜集整理了如下内容,解决了以上两个难题,任何app都可以直接再IDE中直接run,并debug.
通常情况下,我们debug版本的apk和正式release的apk签名是不一样.特别开发一些有签名限制
的App的时候,就造成了调试上的不方便.
Eclipse
Eclips -> Window -> Preference -> Androi -> Buil.
在Custom debug keystore
指定自己的debug.keystore
就可以了.(注意签名文件的名字
不必是debug.keystore
).
Androi的 Studio
android { signingConfigs { debug { storeFile file("debug.keystore") } } } |
如何创建自己的
debug.keystore
?
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000 // 这样你就创建了一个 debug.keystore |
debug.keystore
?假如你现在的签名文件是:my.keystore.
my.keystore
的密码为:android
keytool -storepasswd -keystore my.keystore |
my.keystore
的alias
为:androiddebugkey
keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey |
alias
的密码为:android
keytool -keypasswd -keystore my.keystore -alias androiddebugkey |
执行完上面三步,你的debug.keystore
就创建完成了,替换上去就行.
SOURCE_CODE/build/target/product/security/
$:ls media.pk8 platform.pk8 README shared.pk8 signapk.jar testkey.x509.pem media.x509.pem platform.x509.pem Root.zip shared.x509.pem testkey.pk8 update.zip |
SOURCE_CODE/vendor/CUSTOM_VENTER_NAME/security/
$: ls media.pk8 platform.pk8 releasekey.pk8 shared.pk8 testkey.pk8 media.x509.pem platform.x509.pem releasekey.x509.pem shared.x509.pem testkey.x509.pem |
java -jar platform.x509.pem platform.pk8 UnSign.apk Signed.apk |
zipalign -v 4 MyDemo_signed.apk MyDemo_new.apk |
zipalign -c -v 4 MyDemo.apk |
platform.x509.pem platform.pk8
转成debug.keystore
?openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt |
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey // 如果生成的`debug.keystore`要用在Eclipse中使用,请输入密码:`android`,否则请输入自己的签名即可. |
debug.keystore
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey |