Android APK如何簽名


Android項目以它的包名作為唯一標識,如果在同一設備上安裝兩個相同的應用,后面安裝的應用就會覆蓋前面安裝的應用。為了避免這種情況的發生,我們需要對作為產品發布的應用進行簽名。

簽名其實有兩個作用:

(1) 確定發布者的身份。防止別人用相同包名來替換你已安裝的程序。

(2) 確保應用的完整性。簽名會對應用包中的每個文件進行處理,以確保程序包中的文件不會被替換。

在應用的開發和調試階段,Eclipse的ADT插件或ANT工具會自動生成調試證書,對Android應用簽名。但是,如果要正式發布一個Android應用的話,就必須使用合適的數字證書來給應用程序簽名,不能使用ADT插件或ANT工具生成的調試證書來發布。

這有又兩種方式對Android應用簽名:

1.在Eclipse中對Android應用簽名

(1) 右擊Android項目,Android Tools-->Export Signed Application Package...

(2) 如果系統還沒有數字證書,可以選擇"Create new keystore",按如圖格式填寫數字證書的存儲路徑和密碼。

(3) 填寫數字證書的詳細信息。

(4)指定生成簽名后的APK安裝包的存儲路徑。

簽名證書制作完后,以后就可以直接使用該數字證書簽名了。

(1)選擇前面創建的keystore,輸入創建keystore時的指定密碼。

(2)選擇前面創建時的別名yq的key,並輸入創建該key時指定的密碼,生成簽名后的apk包。

 2.使用命令對APK包簽名

在某些場合下, 我們可能需要對一個“未簽名”的APK包進行簽名,則可通過“命令”來對Android應用進行手動簽名。

(1) 創建keystore庫。JDK的安裝目錄下的bin子目錄下提供了keytool.exe來生成數字證書。

在命令窗口輸入:

keytool -genkeypair -alias yqkey.keystore -keyalg RSA -validity 100 -keystore yqkey.keystore

說明:

-genkeypair:指定生成數字證書。

-alias:指定生成數字證書的別名。

-keyalg:指定生成數字證書的算法。使用RSA算法。

-validity:指定生成的數字證書的有效期。

-keystore:指定所生成的數字證書的存儲路徑。

回車后,接下來將會以交互的方式讓我們輸入數字證書keystore的密碼、作者、公司等詳細信息。

該步驟只要做一次即可,一旦數字證書創建成功后,只要在該證書的有效期內,可以移植重復使用該證書。

(2) 生成未簽名的APK安裝包。在Eclipse中右擊Android項目,Android Tools-->Export Unsigned Application Package...

(3) 使用jarsigner命令對未簽名的APK安裝包進行簽名。JDK的安裝目錄下的bin子目錄下提供了jarsigner.exe工具進行簽名。在命令窗口輸入:

jarsigner -verbose -keystore crazyit.keystore -signedjar Demo_yqkey.apk Demo.apk yqkey.keystore

說明:

-verbose:指定生成詳細輸出。

-keystore:指定數字證書的存儲路徑。

-signedjar:該選項的三個參數分別分簽名的APK包、未簽名的APK包、數字證書別名。

回車后,接下來將會以交互的方式讓我們輸入數字證書keystore的密碼。

(4) 使用zipalign.exe工具優化APK安裝包。zipalign.exe是Android自帶的一個檔案整理工具,它可用於優化APK安裝包,從而提升Android應用與系統之間的交互效率,提升應用程序的運行速度。在命令行窗口輸入:

zipalign -f -v 4 Demo_yqkey.apk

Demo_yqkey_zip.apk

說明:

-f:指定強制覆蓋已有文件。

-v:指定生成詳細輸出。

4:指定檔案整理所基於的字節數,通常指定為4,也就是基於32位進行整理。

Demo_yqkey.apk和Demo_yqkey_zip.apk,分別制定整理前的APK和整理后生成的APK。

生成的Demo_yqkey_zip.apk文件,就是簽名完成且經過優化的APK安裝包,該安裝包可以對外發布了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM