標籤:
背景:
Android項目以他的包為唯一標識,如果一台裝置上安裝了兩個包名相同的應用,後安裝的應用就會覆蓋前面安裝的應用。
目的:
為了避免覆蓋的情況,Android要求對作為成品的應用進行簽名。
作用:
在Eclipse的ADT外掛程式或Ant工具會自動產生調試認證對Android應用簽名。如果要正式發布一個Android應用,必須使用合適的數位憑證來給應用程式簽名,不能使用ADT或者Ant工具產生的調試認證來發布。
在Eclipse中對Android應用簽名
1、右擊項目,Android Tools→Export Singned Application Package…
2、如果系統中沒有數位憑證,可以在視窗中選擇"Create new keystore"單擊按鈕,填寫數位憑證的儲存路徑和密碼。
3、填寫完成後Next,Eclipse將會彈出讓使用者填寫數位憑證的詳細資料。
4、Next,指定產生簽名後的APK安裝包的儲存路徑。
5、Finish。這樣就會在指定目錄下產生一個簽名後的APK安裝包。
一旦數位憑證製作完成,以後就可以最直接使用該認證簽名了。
使用命令對APK進行簽名
1、建立keysrore庫,JDK的安裝目錄下面的BIN中有一個keytool.exe工具產生數位憑證。
keytool -genkeypair -alias -keyalg -validity -keystore
- -genkeypair:指定產生數位憑證
- -alias:指定產生數位憑證別名
- -kayalg:指定產生數位憑證的算嗎,使用RSA演算法
- -validity:指定產生的數位憑證的有效期間
- -keystore:指定所產生的數位憑證的儲存路徑
輸入命令後斷行符號,接著安裝互動式介面輸入相關參數。
2、產生為簽名的apk,Android Tools→Export Unsigned Application Package…
3、使用jarsigner命令對未簽名的APK進行簽名,JDK的Bin子目錄下面
jarsigner -verbose -keystore -signedjar
說明:
- -verbose:指定產生詳細輸出
- -keystore:指定數位憑證儲存路徑
- -singedjar:有三個參數分別是簽名後apk包、未簽名的APK包、數位憑證的別名。
- 斷行符號,以互動的方式輸入數位憑證keystore的密碼。
4、使用zipalign.exe工具最佳化APK安裝包。
zipalign -f -v 4 a.apk a_zip.apk
- -f:指定強制覆蓋已有檔案
- -v:指定產生詳細輸出
- 4:指定檔案整理所基於的位元組數,通常指定為4,也就是基於32為進行整理。
- a.apk、a_zip.apk:分別指定整理前的APK和整理後產生的APK。
01_Android應用開發環境_05_簽名android應用程式