Android程序簽名詳解、打包、發佈到Google play步驟 . 分類: CNDN李偉 CSDN android android應用簽名 android應用發佈 google play發佈 2012-09-03 12:49 8674人閱讀 評論(0) 收藏 舉報 androidgoogle工具eclipsedos優化 目錄(?)[+] 本文主要講解Android應用程序簽名相關的理論知識,包括:什麼是簽名、爲何要給應用程序簽名、如何給應用程序簽名等。 一、什麼是簽名? 若是這個問題不是放在Android開發中來問,若是是放在一個普通的版塊,我想你們都知道簽名的含義。可每每就是將一些生活中經常使用的術語放在計算機這種專業領域,你們就開始迷惑了。計算機所作的事情,或者說編程語言所作的事情,不正是在儘量地模擬現實嗎?因此,計算機中所說的簽名和生活中所說的簽名在本質上是同樣的,它所起到的做用也是一致的! 讓咱們來看看,在現實生活中的簽名。好比下面這張圖片: 這是女星孫儷的簽名。簽名就意味着在紙上或別處寫下本身的名字,或者說在某處打上一個標記做爲你本身的一種特有的標識,當別人看到這個簽名的時候,他會知道這是和你有關的,而不是其它人。 二、爲何要給Android應用程序簽名? 若是隻能用一句簡單的話語來回答這個問題的話,我會說:「這是Android系統所要求的」。 Android系統要求每個Android應用程序必需要通過數字簽名纔可以安裝到系統中,也就是說若是一個Android應用程序沒有通過數字簽名,是沒有辦法安裝到系統中的!Android經過數字簽名來標識應用程序的做者和在應用程序之間創建信任關係,不是用來決定最終用戶能夠安裝哪些應用程序。這個數字簽名由應用程序的做者完成,並不須要權威的數字證書籤名機構認證,它只是用來讓應用程序包自我認證的。 三、爲何我開發的Android應用程序沒有作什麼簽名也能在模擬器和手機上運行? 你沒有給Android應用程序簽名並不表明Android應用程序沒有被簽名。爲了方便咱們開發調試程序,ADT會自動的使用debug密鑰爲應用程序簽名。debug密鑰?它在哪?debug密鑰是一個名爲debug.keystore的文件,它的位置: 系統盤符:/Documents and Settings/liufeng/.Android/debug.keystore 「liufeng」對應於你本身的windows操做系統用戶名,怎麼樣,是否是已經找到它了。這也就意味着,若是咱們想擁有本身的簽名,而不是讓ADT幫咱們簽名的話,咱們也要有一個屬於本身的密鑰文件(*.keystore)。 四、Android應用程序簽名步驟 1)準備工做 apk的簽名工做能夠經過兩種方式來完成: 1)經過ADT提供的圖形化界面完成apk簽名; 2)徹底經過DOS命令來完成apk簽名 我比較喜歡第2)種方式,因此下面將講解如何經過命令的方式完成apk簽名。 給apk簽名一共要用到3個工具,或者說3個命令,分別是:keytool、jarsigner和zipalign,下面是對這3個工具的簡單介紹: 1)keytool:生成數字證書,即密鑰,也就是上面說到的擴展名爲.keystore的那類文件; 2)jarsigner:使用數字證書給apk文件簽名; 3)zipalign:對簽名後的apk進行優化,提升與Android系統交互的效率(Android SDK1.6版本開始包含此工具) 從這3個工具的做用也能夠看出,這3個工具的使用順序。一般咱們本身所開發的全部應用程序,都是使用一樣的簽名,即便用同一個數字證書,這就意味着:若是你是第一次作Android應用程序簽名,上面的3個工具都將用到;但若是你已經有數字證書了,之後再給其它apk簽名時,只須要用到jarsigner和zipalign就能夠完成。 爲了方便使用上面3個命令,首先須要將上面3個工具所在路徑添加到環境變量path中(我說的是爲了方便使用,沒有說必需要這麼作)。怎麼配置環境變量就不在此講解了,這裏須要說一下這3個工具默認所在的路徑: 1)keytool:該工具位於jdk安裝路徑的bin目錄下; 2)jarsigner:該工具位於jdk安裝路徑的bin目錄下; 3)zipalign:該工具位於Android-sdk-windows/tools/目錄下 不知道你們是否注意到keytool和jarsigner兩個工具是jdk自帶的,也就意味着生成數字證書和文件簽名不是Android的專利;另外從字面上理解jarsigner也能猜得出該工具主要是用來給jar文件簽名的。 2)生成未經簽名的apk文件 既然咱們要本身對apk進行簽名,就再也不須要ADT默認幫咱們簽名了。如何獲得一個未經簽名的apk文件呢?打開Eclipse,在Android工程名稱上點擊右鍵,依次選擇「Android Tools」 - 「Export Unsigned Application Package ...」,而後選擇一個存儲位置保存便可。這樣就獲得了一個未經簽名的apk文件。 3)使用keytool工具生成數字證書 keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000 說明: 1)keytool是工具名稱,-genkey意味着執行的是生成數字證書操做,-v表示將生成證書的詳細信息打印出來,顯示在dos窗口中; 2)-keystore liufeng.keystore 表示生成的數字證書的文件名爲「liufeng.keystore」; 3)-alias liufeng.keystore 表示證書的別名爲「liufeng.keystore」,固然能夠不和上面的文件名同樣; 4)-keyalg RSA 表示生成密鑰文件所採用的算法爲RSA; 5)-validity 20000 表示該數字證書的有效期爲20000天,意味着20000天以後該證書將失效 在執行上面的命令生成數字證書文件時,會提示你輸入一些信息,包括證書的密碼,示例以下: 4)使用jarsigner工具爲Android應用程序簽名 jarsigner -verbose -keystore liufeng.keystore -signedjar notepad_signed.apk notepad.apk liufeng.keystore 說明: 1)jarsigner是工具名稱,-verbose表示將簽名過程當中的詳細信息打印出來,顯示在dos窗口中; 2)-keystore liufeng.keystore 表示簽名所使用的數字證書所在位置,這裏沒有寫路徑,表示在當前目錄下; 3)-signedjar notepad_signed.apk notepad.apk 表示給notepad.apk文件簽名,簽名後的文件名稱爲notepad_signed.apk; 4)最後面的liufeng.keystore 表示證書的別名,對應於生成數字證書時-alias參數後面的名稱 5)使用zipalign工具優化已簽名的apk(非必須但建議這麼作) zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk 說明: 1)zipalign是工具名稱,-v表示在DOS窗口打印出詳細的優化信息; 2)notepad_signed.apk notepad_signed_aligned.apk 表示對已簽名文件notepad_signed.apk進行優化,優化後的文件名爲notepad_signed_aligned.apk 說明:若是你之前的程序是採用默認簽名的方式(即debug簽名),一旦換了新的簽名應用將不能覆蓋安裝,必須將原先的程序卸載掉,才能安裝上。由於程序覆蓋安裝主要檢查兩點: 1)兩個程序的入口Activity是否相同。兩個程序若是包名不同,即便其它全部代碼徹底同樣,也不會被視爲同一個程序的不一樣版本; 2)兩個程序所採用的簽名是否相同。若是兩個程序所採用的簽名不一樣,即便包名相同,也不會被視爲同一個程序的不一樣版本,不能覆蓋安裝。 另外,可能有人可能會認爲反正debug簽名的應用程序也能安裝使用,那也沒有必要本身簽名了嘛。千萬不要這樣想,debug簽名的應用程序有這樣兩個限制,或者說風險: 1)debug簽名的應用程序不能在Android Market上架銷售,它會強制你使用本身的簽名; 2)debug.keystore在不一樣的機器上所生成的可能都不同,就意味着若是你換了機器進行apk版本升級,那麼將會出現上面那種程序不能覆蓋安裝的問題。不要小視這個問題,若是你開發的程序只有你本身使用,固然無所謂,卸載再安裝就能夠了。但要是你的軟件有不少使用客戶,這就是大問題了,就至關於軟件不具有升級功能! 》》》》》》》》》》》》》》》》》》》》》關於應用程序在Google Market 如今稱爲 Google Play上發佈的步驟《《《《《《《《《《《《《《《《《《《《 寫了一段時間的android應用了,只是在本身手機上面安裝。 上週申請了android developer,須要一次性25美圓的程序開發註冊費用。費用須要用google checkout,因此還要先申請google checkout。國內的信用卡通常都支持VISA,能夠以香港地址做爲付款地址註冊成功。註冊成功後,還能夠向google購買一部用於開發的手機。 這樣就能夠進入android market發佈主頁了。這是我發佈第一個應用後的截圖: image 開發的是一個測試用的示例,見寫了一個android帶動畫翻頁效果的程序。 簽名前須要瞭解的 首先須要知道,android market發佈應用程序,沒有人爲的審覈過程,若是符合要求,只要提交,將馬上生效。 應用程序須要通過簽名(sign)才能夠發佈,簽名的主要做用是,讓別人知道這個程序是你經過哪一個android開發者賬號發佈的。 簽名將生成一個二進制的私鑰文件(private key)。其實若是使用windows+eclipse adt開發,在用戶目錄下: .android\debug.keystore 路徑下的文件,就已是一個私鑰了,只不過這是debug用的私鑰。即,android不能安裝沒有簽名的APK,若是經過debug方式(開發者經過usb鏈接)安裝APK,實際上生成的APK是使用debug簽名的。使用debug私鑰簽名的APK文件沒法發佈到android market。 公鑰和私鑰,是非對稱密鑰體系中的概念。在這裏的基本原理是用戶可經過本身的私鑰加密數據(應用程序中的指紋部分),數據能夠經過公鑰解碼看到,主要目的是確保信息來源不被篡改。 生成私鑰文件的步驟 簽名很簡單,使用的工具在JDK的bin目錄下,keytool.exe。命令以下: keytool.exe -genkey -v -keystore 私鑰的文件名 -alias 本身起個別名 -keyalg RSA -validity 10000 這裏面除了漢字部分,均可以不動。運行該命令,會有交互的提示,相似下面: image 這樣就會生成一個私鑰文件,該文件要妥善保管,防止被別人冒用。 其實生成私鑰也可使用eclipse adt插件,界面和下面簽名應用程序的界面是同一個。 使用私鑰文件簽名應用程序 使用eclipse adt能夠很方便的生成帶簽名的應用程序。 image 而後: image 這裏要選擇剛纔生成的私鑰文件,並輸入正確的生成私鑰的密碼。 而後: image 輸入別名的密碼。 再下一步,就簡單了,選擇生成文件的路徑便可。 image 發佈應用程序 主要是上傳應用程序文件,相關文件,好比屏幕截圖,還有就是程序的文字描述等。 image 這部分上傳文件就不說了,主要是屏幕截圖,遇到點兒小麻煩,這裏只支持兩種尺寸的圖片,個人nexus one 480×800竟然沒有,只好用480×854的格式,須要用軟件爲截圖修改一下尺寸(多了一點兒空白)。不然上傳後會提示錯誤。 image 這部分,可能須要增長好比中文預研的介紹,可是沒有簡體中文,用的是繁體中文語言。 image 最後,勾選贊成google的要求。發佈便可。 立刻就能夠在android market上看到本身發佈的應用。 imageandroid