開發(fā)中,Apk簽名是一件不大也不小的事,如果你做過微博
相關的開發(fā),你可能遇到如下情景:
用Eclipse或者AS直接點run生成的apk跑在手機上根本不能授權成功,每次需要導出release版本,很煩.
如果你基于系統(tǒng)源碼開發(fā)或者二次開發(fā)系統(tǒng)預置App,你的流程可能是:
mm 或者 mmm 編譯出apk,之后再push 到/system/app/ 下,或者用adb install -r 安裝到手機.
否根本無法安裝,因為簽名不一樣.
因此我搜集整理了如下內(nèi)容,解決了以上兩個難題,任何app都可以直接再IDE中直接run,并debug.
日常開發(fā)
修改Eclips或者Android Studio的默認簽名文件
通常情況下,我們debug版本的apk和正式release的apk簽名是不一樣.特別開發(fā)一些有簽名限制
的App的時候,就造成了調(diào)試上的不方便.
如何修改?
- Eclipse
Eclips -> Window -> Preference -> Androi -> Buil.
在Custom debug keystore
指定自己的debug.keystore
就可以了.(注意簽名文件的名字
不必是debug.keystore
).
- Androi的 Studio
android {
signingConfigs {
debug {
storeFile file("debug.keystore")
}
}
}
疑問?
如何創(chuàng)建自己的
debug.keystore
?
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000
// 這樣你就創(chuàng)建了一個 debug.keystore
如何把現(xiàn)有簽名文件,轉(zhuǎn)換成Eclipse或Android Studio可用的debug.keystore
?
假如你現(xiàn)在的簽名文件是: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
執(zhí)行完上面三步,你的debug.keystore
就創(chuàng)建完成了,替換上去就行.
系統(tǒng)源碼開發(fā)
源碼簽名文件在哪?
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
如何用系統(tǒng)簽名文件簽名apk?
java -jar platform.x509.pem platform.pk8 UnSign.apk Signed.apk
zipalign優(yōu)化apk
zipalign -v 4 MyDemo_signed.apk MyDemo_new.apk
是否用zipalign優(yōu)化過
zipalign -c -v 4 MyDemo.apk
如何把platform.x509.pem platform.pk8
轉(zhuǎn)成debug.keystore
?
- 生成shared.priv.pem
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
- 生成pkcs12
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