android應用之——爲自己的apk簽名

1.爲何需要簽名
  每個發佈的應用都有自己的一個唯一合法的ID,這個就是應用自身的簽名,簽名可以保證你軟件升級的一致性,使用相同簽名的應用可以實現覆蓋安裝,而不一致的簽名將無法共享使用數據,也即是無法覆蓋安裝,這樣可以防止別人篡改,盜用開發者的應用,造成對開發者利益的損害。那麼如何爲自己的應用進行簽名呢?

 

2.APK簽名之兩步走
  a.創建一個key
  b.使用步驟a中產生的key對apk簽名

 

3.具體操作

  方法一:命令行下對apk簽名

   (筆者之前使用1.7版本的sdk用該方法簽名發現簽名後的文件無法正常安裝,1.6版本是沒有任何問題的,所以1.7的朋友建議使用方法二)
  創建key,需要用到java的keytool.exe工具(該工具位於java環境的安裝目錄下jdk1.6.0_24\jre\bin,不同jdk版本可能略有差異),使用產生的key對apk簽名用到的是jarsigner.exe (位於安裝目錄下的jdk1.6.0_24\bin),如果你正確安裝了java環境,並配置了正解的環境變量,那麼你可以直接打開運行命令窗口輸入

 

C:\Users\CodeApe> keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
說明: -genkey 產生密鑰
-alias demo.keystore key的別名 demo.keystore
-keyalg RSA 使用RSA算法對簽名加密
-validity 40000 證書有效期限4000天

輸入以上命令之後,需要輸入一些信息,ps:提示輸入口令的時候是不會有任何顯示的,只管輸入就是了,請牢記自己輸入的兩個口令!!!如下圖:
 
C:\Users\CodeApe> jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
說明: -verbose 輸出簽名的詳細信息
-keystore demo.keystore 使用key的絕對路徑,就是在第一步中生成的key
-signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數中依次爲簽名後產生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore

 

注意事項:android工程的bin目錄下的demo.apk默認是已經使用debug用戶簽名的,所以不能使用上述步驟對此文件再次簽名。正確步驟應該是:在工程點擊右鍵->Anroid Tools-Export Unsigned Application Package導出的apk採用上述步驟簽名。

 

  方法二:使用Eclipse導出帶簽名的apk
  Ps:這個是使用adt插件導出已經簽名的apk文件,簡單快捷,強烈推薦該方法!!

 

1、右鍵工程,選擇Export,出現如下窗口,選擇Export Android Application ==》 next!
android應用之——爲自己的apk簽名


2、選擇需要簽名的工程(Android Application)

 android應用之——爲自己的apk簽名

 

3、創建一個新的key文件(如果已經有key文件可以選擇第一個)
android應用之——爲自己的apk簽名

 

4、輸入新的key的信息,alias(別名)、password(key密碼,請牢記)、Confirm(確認key密碼)、validity(證書有效期,單位爲年)、First and Last Name(姓名)、Orgnizational Unit(公司單位)、Organization(組織)、City or Locality(縣、市區)、State or Province(省份)、Country Code(國家的兩位英文縮寫)
android應用之——爲自己的apk簽名

 

5、生成的簽名apk文件的存放路徑
android應用之——爲自己的apk簽名

6、生成的key文件和已經簽名好的apk文件
android應用之——爲自己的apk簽名

 

7、如果是已經存在的key文件簽名,第三步改成如下就行了:

android應用之——爲自己的apk簽名

至此apk文件的簽名介紹完畢,你的簽名文件也可以拿出去工用戶使用了,但是谷歌還提供一個優化工具對你的apk文件進行優化,用法介紹如下:

 

4.簽名之後,用zipalign(壓縮對齊)優化你的APK文件。
  未簽名的apk不能使用,也不能優化。簽名之後的apk谷歌推薦使用zipalign.exe(位於android-sdk-windows\tools目錄下)工具對其優化:

C:\Users\CodeApe> zipalign -v 4 demo_signed.apk final.apk

 

  這樣,zipalign能夠使apk文件中未壓縮的數據在4個字節邊界上對齊(一般4個字節是一個性能很好的值),這樣android系統就可以使用mmap()(請自行查閱這個函數的用途)函數讀取文件,可以在讀取資源上獲得較高的性能,
  PS:

      1.在4個字節邊界上對齊的意思就是指編譯器把4個字節作爲一個單位來進行讀取的數據資源,因此,CPU能夠對變量進行較之前不對齊更高效、快速的訪問。

      2.對齊的根源:android系統中的Davlik虛擬機使用自己專有的格式DEX,DEX的結構是緊湊的,爲了讓運行時的性能更好,可以進一步用"對齊"進一步優化,但是大小一般會有所增加。

原創博文,歡迎轉載!

轉載請註明出處:http://blog.sina.com.cn/s/blog_6dee445401011gk6.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章