亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

全部開發者教程

Android 入門教程

菜單類控件
菜單:Menu
并發編程
多線程

Android 程序簽名打包

在上一章,我們創建了自己的 Android 工程,并成功的在模擬器中運行起來。同時提到,工程目錄中有一個 bin 目錄,運行之后我們可以在此目錄下找到我們的 apk。那么不難想到,我們在點“Run”之后,系統會編譯我們的代碼,并結合配置文件打出一個 apk。

眾所周知 apk 是 Android 系統的安裝包,在我們編寫完代碼,打包成 apk 之后,就可以將 apk 發布到應用市場,用戶下載 apk 后就可以安裝運行了。這一切看似簡單但暗藏玄機,我們的 apk 一旦到了紛繁復雜的市場,就需要考慮很多問題。

比如如何將你發布的應用和其他開發者發布的應用區分開;如何確認用戶下載的 apk 就是官方發布的而不是個人開發者;如何安全的完成應用升級等等一系列的問題。這些問題有些涉及商業,有些涉及系統安全,對于市場穩定性而言都是至關重要的,解決這些問題的,就是本章主角:Android 程序簽名打包。大家可能對這個技術比較陌生,接下來我們從 what、why、how 這三個角度讓大家對簽名打包有一個清晰的認識。

1. 什么是簽名

現在你寫了一本書并簽上自己的大名,將它出版之后放到各大書店,理想狀態就是讀者通過書名就能找到它。但是市面上的書不計其數,難免會有書名雷同,亦或是你的書大賣,市面上出現了盜版、翻版,這時候光靠書名已經沒辦法辨別,你的簽名就能發揮作用了。今后如果你要出續集,同樣,為了避免讀者買到的是續集而不是同名的其他書,也需要在找到書名之后再次確認一下你的簽名,兩者一致才能認定這就是續集。

這一章提到的簽名和現實中的簽名非常類似,只不過在這里我們稱為“數字簽名”。

在 Android 系統中,所有安裝到系統的App都必有一個數字證書,此數字證書用于標識應用程序的作者和應用程序之間的信任關系。Android 使用 Java 的數字證書相關的機制來給 apk 加蓋數字證書,數字證書的私鑰由開發者持有。

Android 使用證書作為標識應用程序作者的一種方式,和 Https 不同,Android 證書不需要由證書認證中心簽名,開發者直接使用自制簽名證書。所以我們在打包 apk 的時候,必須對 apk 用自己的證書做一次簽名打包,用于在市場上唯一標識發布者的身份。一般 Android 有兩種簽名:

  1. 調試模式的簽名: Android sdk 為應用自動生成一個簽名證書,調試模式下簽名的應用不能對外發布,因為由構建工具創建的證書是不安全的,應用商店不接受調試證書簽名的 apk;
  2. 公布模式下簽名: 需要生成自己的證書,可用于發布。

2. 為什么要做簽名打包

關于簽名打包的原因,上面已經提到過一些,主要是用于標識開發者的身份。這里再針對具體的應用場景闡述幾個引入簽名的優勢:

  • 應用程序升級: 在應用程序發布更新時,如果用戶已有此 App,并且簽名和待升級的 apk 簽名一致,那么用戶可以無縫的升級到新版本。如果簽名不一致,那么不會發生升級,此時相當于用戶安裝了兩個完全獨立的 App。
  • 應用程序模塊化: Android 允許相同證書簽名的應用程序運行在相同的進程中,此時系統會將它們作為單個應用程序處理。此時每個應用程序可以以模塊化部署,在升級時可以獨立地升級其中的某一個模塊。
  • 代碼、數據的授權共享: Android 提供了以簽名為基礎的權限機制,因此一個應用可以暴露功能給另一個用相同證書簽名的應用使用,這樣就可以在相同簽名的應用程序之間共享代碼和數據。

3. 如何簽名打包

簽名打包的方式有很多,這里介紹一種最簡單的方式,直接使用Eclipse就可以為我們的 App 簽名打包。

  1. 在 Eclipse 中選擇“File” -> “Export”,選擇“Android” -> “Export Android Application”;
  2. 這時候提示我們創建一個密鑰庫 keystore,選擇 Create new keystore,然后指定一個保存證書的目錄并設置證書密碼;

創建密鑰庫

  1. 接著填寫密鑰庫信息,填寫證書文件的密碼,使用期限和組織單位的信息,這樣一個證書就生成好了。

密鑰庫信息

  1. 回到第一步,在 Export 的時候選擇“Use existing keystore”,然后選擇剛剛創建的證書,并輸入密碼,一路 next,搞定!

再看看 Eclipse 的 bin 目錄,就會出現剛剛我們用自己的證書簽名的 apk,待我們后面學習 Android 功能開發之后,你就可以用這種方式簽名打包自己的 apk 進行發布了。

4. 小結

經過前面兩章的學習,現在你已經可以完成一個 Android 項目的創建、運行、簽名打包,剩下的也就是最重要—— Android 項目開發。接下來我們就正式進入 Android 基礎知識,一步步進入 Android 的世界。