Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 安卓應用程序的簽名

安卓應用程序的簽名

編輯:關於android開發

安卓應用程序的簽名


簽名安卓應用程序

Android應用以它的包名作為唯一標識。如果在同一部手機上安裝兩個包名相同的應用,後面安裝的應用就會覆蓋前面安裝的應用。為了避免這種情況的發生,Android要求對作為產品發布的應用進行簽名。

簽名主要有如下兩個作用:

1.確定發布者的身份。由於應用開發者可以通過使用相同包名來替換已經安裝的程序,因此使用簽名可以避免發生這種情況,也就是避免別人通過發布相同包名的程序來替換掉你發布的程序。

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

通過上面的介紹不難看出,Android應用簽名的作用類似於現實生活中的簽名。當開發者對Android應用簽名時,相當於告訴外界:該應用程序是由“我”開發的,“我”會對該應用程序負責----因為有簽名(簽名有密鑰),別人無法冒名頂替“我”;與此同時,“我”也無法冒名頂替別人。

 

注意:在應用的開發、調試階段,Eclipse的ADT插件或Ant工具會自動生成調試證書對Android應用簽名,因此部署、調試過程並沒有經過簽名。需要指出的是,如果要正式發布一個Android應用,必須使用合適的數字證書來給應用程序簽名,不能使用ADT插件或Ant工具生成的調試證書來發布。

在Eclipse中對安卓應用簽名

開發的過程中我們大多數時候都會直接在Eclipse中對Android應用簽名,在Eclipse中對Android應用簽名的步驟如下:

1.右鍵點擊Android項目,在下拉菜單中選擇“AndroidTools”---->“ExportSignedApplicationPackage...”,操作如下:

\

點擊之後會彈出一個提示框,顯示如下:

\

選擇要導出的工程,因為是在要導出的工程上點的鼠標右鍵,所以默認就是要導出的工程,所以這一步不需要什麼操作,直接點“Next>”,顯示如下:

\

2.選中“Createnewkeystore”單選按鈕,按照格式填寫數字證書的存儲路徑和密碼。操作顯示如下:

\

3.按照上述格式填寫完成後點擊“Next>”,Eclipse會彈出如下提示框:

\

按照上圖所示填寫數字證書的詳細信息。

4.填寫完畢之後點擊“Next>”,顯示如下:

\

該窗口用於指定生成簽名後的APK安裝包的存儲路徑。

5.點擊“Finish”,完成簽名。Eclipse會在指定路徑下生成一個簽名後的APK安裝包。

上面的步驟制作了新的數字證書,一旦數字證書制作完成,以後就可以直接使用該數字證書簽名了。利用已有的數字證書進行簽名,請按照如下步驟進行:

1.在需要簽名的工程上點擊鼠標右鍵,默認工程不需要修改,直接點下一步,直到出現如下截圖:

\

點擊“Browse...”,選擇剛剛生成的數字簽名,操作顯示如下:

\

選中之後,輸入該數字簽名對應的密碼。

2.上述內容輸入之後,點擊“Next>”,顯示如下:

\

選擇制作該數字簽名時創建的別名為“keyzz”(我創建的是這個別名,大家根據自己創建的別名進行選擇)的key,並輸入創建該key時指定的密碼。

3.上述操作完成之後,點擊“Next>”,顯示如下:

 

\

選擇簽名後APK包的存儲路徑,上面黃色歎號提示的英文“Destinationfilealreadyexists”意思是目標文件已經存在,這個不用管,直接覆蓋之前的文件即可,如果不想覆蓋,就點“Browse...”,重新選擇一個存儲路徑。

4.選擇完之後,點“Finish”按鈕即可生成簽名後的APK包。

使用命令對安卓應用簽名

如果不想借助於Eclipse提供的方式對Android應用程序簽名,或在某些場合下,需要對一個“未簽名”的APK包進行簽名,則可通過“命令”來對Android應用進行手動簽名。

使用命令對Android應用簽名的步驟如下:

1.創建keystore庫。JDK的安裝目錄下的bin子目錄下提供了keytool.exe工具來生成數字證書。點擊“開始”--->“運行”,然後輸入“cmd”,在彈出的命令行界面用cd命令切換到你安裝的jdk的目錄裡(如果你已經添加到環境變量裡面了,那也可以不用切換到jdk的目錄下),我的是“C:\ProgramFiles\Java\jdk1.6.0_22\bin”,在命令行窗口輸入如下命令:

keytool-genkeypair-aliaszzfeng.keystore-keyalgRSA-validity1000-keystorezzfeng.keystore

上面命令中各選項說明如下:

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

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

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

-validity:指定生成的數字證書的有效期(單位是天)。

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

輸入上述命令後按回車鍵,接下來將會以交互式方式讓用戶輸入數字證書keystore的密碼、作者、公司等詳細信息,操作如下圖所示:

\

注意:該步驟的作用是生成屬於你們公司、你的數字證書,這個步驟只要做一次即可。一旦數字證書創建成功之後,只要在該證書有效期內,可以一直重復使用該證書。

2.生成未簽名的APK安裝包。在Eclipse中鼠標右鍵點擊Android項目,在下拉菜單中選擇“AndroidTools”---->“ExportUnsignedApplicationPackage...”,Eclipse會彈出一個保存文件的對話框,當我們選擇好存儲文件的位置和文件名後單擊“保存”(有的版本是“Finish”)按鈕即可生成一個未簽名的APK安裝包。操作顯示如下:

\

 

\

 

 

3.使用“jarsigner”命令對未簽名的APK安裝包進行簽名。在步驟1中到的目錄下有“jarsigner.exe”工具,可以用來進行簽名。命令行窗口輸入如下命令:

 

jarsigner-verbose-keystorezzfeng.keystore-signedjarBleDevManager-signed.apkBleDevManager.apkzzfeng.keystore

 

上面的命令中各選項的說明如下:

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

-keystore:指定數字證書的存儲路徑(上述命令直接用的數字證書名是因為數字證書就在當前目錄下,如果是其他目錄,需要在數字證書名前加相應的路徑)。

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

 

注意上述的命令中路徑和文件名等一定要跟自己的對應,因為你設置的路徑和文件名有可能跟我的不一樣,大家根據自己設置的對應修改一下即可。

輸入上述命令之後按回車鍵,接下來將會以交互式方式讓用戶輸入數字證書keystore的密碼,操作顯示如下:

\

 

簽名完成。

4.使用“zipalign.exe”工具優化APK安裝包。“zipalign.exe”是Android自帶的一個檔案整理工具,它可用於優化APK安裝包,從而提升Android應用與系統之間的交互效率,提升應用程序的運行速度。該工具存在於SDKtools下,我的路徑是“E:\adt-bundle-windows-x86-20130917\sdk\build-tools\19.1.0”,如果找不到,可以在sdk目錄下搜索一下。如果存在的路徑沒有設置到環境變量裡面去,那我們就在命令行中用cd命令切換到上述路徑中,並將剛簽過名的需要優化的APK安裝包也復制到該路徑下,然後在命令行窗口輸入如下命令:

zipalign-f-v4BleDevManager-signed.apkBleDevManager-signed-zip.apk

上面的命令中各選項說明如下:

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

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

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

BleDevManager-signed.apk和BleDevManager-signed-zip.apk分別指定整理前的APK和整理後生成的APK。

 

運行上述命令,將會在當前目錄下生成一個“BleDevManager-signed-zip.apk”文件,這就是簽名完成且經過優化的APK安裝包,該安裝包可以對外發布了。操作顯示如下:

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved