天天看點

MUI中微信支付必須用自有的 Android程式簽名詳解、打包、釋出到Google play步驟

1、什麼是簽名?

      讓我們來看看,在現實生活中的簽名。比如下面這張圖檔:

MUI中微信支付必須用自有的 Android程式簽名詳解、打包、釋出到Google play步驟

這是女星孫俪的簽名。簽名就意味着在紙上或别處寫下自己的名字,或者說在某處打上一個标記作為你自己的一種特有的辨別,當别人看到這個簽名的時候,他會知道這是和你有關的,而不是其它人。

“liufeng”對應于你自己的windows作業系統使用者名,怎麼樣,是不是已經找到它了。這也就意味着,如果我們想擁有自己的簽名,而不是讓ADT幫我們簽名的話,我們也要有一個屬于自己的密鑰檔案(*.keystore)。

1)準備工作

      apk的簽名工作可以通過兩種方式來完成:

            1)通過ADT提供的圖形化界面完成apk簽名;

            2)完全通過DOS指令來完成apk簽名

我比較喜歡第2)種方式,是以下面将講解如何通過指令的方式完成apk簽名。

      給apk簽名一共要用到3個工具,或者說3個指令,分别是:keytool、jarsigner和zipalign,下面是對這3個工具的簡單介紹:

            1)keytool:生成數字證書,即密鑰,也就是上面說到的擴充名為.keystore的那類檔案;

            2)jarsigner:使用數字證書給apk檔案簽名;

SDK1.6版本開始包含此工具)

      為了友善使用上面3個指令,首先需要将上面3個工具所在路徑添加到環境變量path中(我說的是為了友善使用,沒有說必須要這麼做)。怎麼配置環境變量就不在此講解了,這裡需要說一下這3個工具預設所在的路徑:

            1)keytool:該工具位于jdk安裝路徑的bin目錄下;

            2)jarsigner:該工具位于jdk安裝路徑的bin目錄下;

Platform-Tools相比對的SDK Build-Tools版本)\zipalign)目錄下

2)生成未經簽名的apk檔案

Tools” - “Export Unsigned Application Package ...”,然後選擇一個存儲位置儲存即可。這樣就得到了一個未經簽名的apk檔案。

生成未經簽名的apk檔案遇到了問題,參考文章:

<a href="http://blog.csdn.net/buaaroid/article/details/49470113">APK打包時,引用的appcompat_v7工程包報錯的解決辦法</a>

<a href="http://blog.csdn.net/buaaroid/article/details/49469213">Android APP打包時,出錯:"XXX" is not translated in "af" (Afrikaans), "am" (Amharic), "ar" (Arabic).....</a>

<a href="http://blog.csdn.net/buaaroid/article/details/51024141">Illegal resource reference: @*android resources are private and not always present 解決方案</a>

3)使用keytool工具生成數字證書

先介紹cmd下的兩個指令:

跳轉到目錄C:\Program Files\Java\jdk1.8.0_45\bin:

 &gt;  cd C:\Program Files\Java\jdk1.8.0_45\bin

檢視目錄下内容 

&gt; dir

使用keytool工具生成數字證書

      &gt; 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天之後該證書将失效

在執行上面的指令生成數字證書檔案時,會提示你輸入一些資訊,包括證書的密碼,示例如下:

MUI中微信支付必須用自有的 Android程式簽名詳解、打包、釋出到Google play步驟

完成上述操作後,在 keytool 所在的目錄下會生成xxx.keystore 的數字證書。