Android從零單排之簽名打包,android簽名打包

來源:互聯網
上載者:User

Android從零單排之簽名打包,android簽名打包
轉載請註明出處:http://blog.csdn.net/crazy1235/article/details/46289803簽名介紹什麼是簽名?

在現實生活中,簽名就相當與合約上的簽字和蓋章。只有簽名之後,才具有一定的效力。如果沒有簽名,“合約”就沒有對象,也就沒有法律效力了。

為什麼要簽名?

Android系統要求每一個應用程式必須經過數位簽章才能安裝到系統中,也就是說沒有經過簽名的app,是沒有辦法安裝到你的android機器上的。
Android通過數位簽章來標誌應用程式和開發人員之間的聯絡,它是對應用程式自我認證的一個方式。
說白了,就是為了標誌一個APP的所屬,區分APP。

簽名的好處:
  • 程式升級帶來方便。
    只有相同簽名和相同包名的程式才能覆蓋安裝。
  • 應用程式模組化。
    android系統允許擁有同一個數位簽章的程式運行在一個進程中,android程式會將他們視為同一個程式,所以可以將程式分模組開發,使用者只需在需要的時候下載相應的模組即可。
  • 資料共用
    android提供了基於數位憑證的許可權賦予機制,應用程式可以喝其他程式共用一些資料給擁有相同簽名的程式。

(最後兩點好處,筆者暫時沒有接觸到。)

如何簽名打包

對APK進行簽名,有兩種方式,分別是 1. 通過ADT提供的圖形化介面簽名打包2. 通過DOS命令來簽名打包

首先需要說明的一下就是:我們一般偵錯工具,使用的都是debug簽名(debug.keystore)。

一般我們開發應用程式的時候,都是多人協作的,每個人的機器的debug的簽名都是不一樣的,所以經常會遇到你寫的程式提交之後,同事更新了之後就不能正常的運行。比如百度地圖的相關代碼邏輯,是與簽名有很大聯絡的。使用debug簽名會導致,某些代碼只能在你自己的機器上運行,這樣就太LOW了。

所以一般都是共用一個release簽名
最終發布apk版本的時候,用的就是release版的簽名,也就是正式版的簽名。

下面,筆者對這兩種方式都自己講解一下:

通過圖形化介面簽名打包

項目右鍵,你會看到:Android Tools

Export Signed Application Package
表示匯出帶有簽名的apk檔案。
Export Unsigned Application Package
表示匯出不帶有簽名的apk檔案

我們選擇第一項,然後next,

此時你可以選擇使用已經存在的keystore,也可以自己建立一個keystore。
我們選擇建立一個:

next之後,

在此介面需要填寫一些簽名的資訊,比如:別名,簽名密碼,使用到期日,組織資訊等。

再次下一步,就是產生帶有簽名的apk檔案了。

經過上面的一系列的步驟,就打包出來一個帶有簽名的apk檔案。

下次再發布版本的時候,就可以使用已經產生的簽名打包了。

next之後,如果你的簽名檔案密碼是正確,會自動把你設定的別名列出來:

然後輸入你的簽名的密碼,下一步,下一步就行了。

通過命令的方式簽名打包

在使用命令的方式產生簽名打包之前,我們先看一下debug.kestore都包括哪些資訊。
使用如下命令,可以查看簽名的資訊:

keystool -list -v -keystore debug.keystore

debug簽名的口令是: android

可以看到debug.keystore中包含的資訊,與我們用圖形化介面建立簽名填寫的資訊基本對應。

我們對工程進行簽名打包需要用到兩個工具:keytooljarsigner

  • keytool:用於產生數位簽章。
    keytool不僅可以用來查看簽名資訊,也可以用來產生一個簽名,該工具位於jdk的bin目錄下。

產生簽名的命令如下:

keytool -genkey -v -keystore xxx.keystore -alias xxx -keyalg RSA -validity xxx

執行這條命令之後,會提示你輸入一些資訊:

  • jarsigner: 使用簽名給apk檔案簽名。該用具也位於jdk的bin目錄中。
    使用命令編譯出一個apk檔案,很繁瑣,得不償失。我們使用圖形化介面來打包出一個不帶簽名的apk。

使用如下命令對此apk進行簽名

jarsigner -verbose -keystore xxx.keystore -signedjar xxx.apk xxx.apk xxx

執行此命令之後,稍微等待一會,就會提示你打包成功。

筆者在研究簽名打包的過程中,在網上看到還有一個步驟,就是使用zipalign命令對apk進行最佳化。

zipalign -v 4 xxx.apk xxx_aligned.apk

命令的意思就是把xxx.apk最佳化成為xxx_aligned.apk。針對項目比較龐大的時候,使用此命令有較大的明顯,比較小的項目最佳化效果不是很明顯。

此命令解釋如下(網路):

zipalign能夠是apk檔案未壓縮的資料在4個位元組邊界上對齊,這樣android系統就可以使用mmap()函數讀取檔案,可以在讀取資源檔上擷取較高的效能。
總結
  • 簽名不同的相同包結構的apk不能覆蓋安裝,在手機上安裝的時候,會提示你簽名衝突。在eclipse等開發工具上啟動並執行時候,會做如下提示:


- 未經過簽名的apk不能安裝到手機上。在經過Export Unsigned Application Package步驟之後,eclipse就會給你提示:在發布程式之前,需要對程式簽名處理

此篇blog到此結束~~
感謝大家支援!如有錯誤,請指出~~
謝謝~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.