Android apk签名方法
為了保證每個應用程序開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程序,我們需要對我們發布的APK文件進行唯一簽名,保證我們每次發布的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。
在這里介紹兩種簽名的方法如下:
1、在命令行對apk簽名:
創建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目錄下),把上兩個軟件所在的目錄添加到環境變量path后,打開cmd輸入
C:\Documents and Settings\mzba>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
相關說明:
?
? ? ? ?-genkey 產生密鑰
? ? ? ?-alias demo.keystore 別名 demo.keystore
? ? ? ?-keyalg RSA 使用RSA算法對簽名加密
? ? ? ?-validity 40000 有效期限4000天
? ? ? ?-keystore demo.keystore?
C:\Documents and Settings\mzba>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
相關說明:
? ? ? ?-verbose 輸出簽名的詳細信息
? ? ? ?-keystore ?demo.keystore 密鑰庫位置
? ? ? ?-signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數中依次為簽名后產生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore.
注意事項:android工程的bin目錄下的demo.apk默認是已經使用debug用戶簽名的,所以不能使用上述步驟對此文件再次簽名。正確步驟應該是:在工程點擊右鍵->Anroid Tools-Export Unsigned Application Package導出的apk采用上述步驟簽名。
2、使用Eclipse導出帶簽名的apk?
首先,選擇Export...如下圖:
創建密鑰庫keystore,輸入密鑰庫導出位置和密碼,記住密碼,下次Use existing keystore會用到。
填寫密鑰庫信息,填寫一些apk文件的密碼,使用期限和組織單位的信息。
生成帶簽名的apk文件,到此就結束了。
使用你自己的同一個簽名證書,就沒有人能夠覆蓋你的應用程序,即使包名相同,所以影響有:
1) App升級。 使用相同簽名的升級軟件可以正常覆蓋老版本的軟件,否則系統比較發現新版本的簽名證書和老版本的簽名證書不一致,不會允許新版本安裝成功的。
2) App模塊化。android系統允許具有相同的App運行在同一個進程中,如果運行在同一個進程中,則他們相當于同一個App,但是你可以單獨對他們升級更新,這是一種App級別的模塊化思路。
3) 允許代碼和數據共享。android中提供了一個基于簽名的Permission標簽。通過允許的設置,我們可以實現對不同App之間的訪問和共享,如下:
AndroidManifest.xml:<permission android:protectionLevel="normal" />
其中protectionLevel標簽有4種值:normal(缺省值),dangerous, signature,signatureOrSystem。簡單來說,normal是低風險的,所有的App不能訪問和共享此App。dangerous 是高風險的,所有的App都能訪問和共享此App。signature是指具有相同簽名的App可以訪問和共享此App。 signatureOrSystem是指系統image中App和具有相同簽名的App可以訪問和共享此App,谷歌建議不要使用這個選項,因為簽名就足夠了,一般這個許可會被用在在一個image中需要共享一些特定的功能的情況下。
總結
以上是生活随笔為你收集整理的Android apk签名方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mstsc /console 远程命令
- 下一篇: java.lang.Unsupporte