簽署你的Android應用程式(.keystore)

一般在開發Android軟體的時候,會使用預設的debugkey來做簽署動作,當app要上market時就必須要產生一個專用的簽署檔案(.keystore),沒有辦法再繼續使用debugkey。這篇文章記錄怎麼產生.keystore。

其實網路上有很多分享或很多Android相關書籍都寫得很詳細,這篇文章小蛙記錄一下,免得每次要產生的時候都還要google(官方文件有很詳細的說明)。產生keystore必須透過Java的keytool工具,以下對keytool的解釋節錄自Keytool工具介紹@匯智


Keytool 是一個有效的安全鑰匙和憑證的管理工具. 它能夠使用戶使用數位簽名來管理他們自己的私有/公共鑰匙對,管理用來作自我鑒定的相關的憑證,管理資料完整性和鑒定服務.它還能使用戶在通信時緩存它們的公共鑰匙.

產生的方法很簡單,只要照著貼就可以了。

keytool -genkey -v -keystore rdss.keystore -alias rdss -keyalg RSA -keysize 2048 -validity 10000

如果這邊出現「keytool: command not found」,請把$JAVA_HOME\bin加入環境變數$PATH中,或是直接到$JAVA_HOME\bin\目錄下執行keytool,例如小蛙的環境是C:\Program Files\Java\jdk1.7.0_02\bin,就先cd C:\Program Files\Java\jdk1.7.0_02\bin之後開始輸入上面的指令。
將上述指令-keystore rdss.keystore以及-alias rdss中的rdss改成自己要的名字,其他東西照著貼上就好,-validity官方說明文件建議設定10000以上的值(指令細節可參考官方文件)。

輸入金鑰儲存庫密碼: mykeystorepassword
重新輸入新密碼: mykeystorepassword
您的名字與姓氏為何?
  [Unknown]:  Hans
您的組織單位名稱為何?
  [Unknown]:
您的組織名稱為何?
  [Unknown]:
您所在的城市或地區名稱為何?
  [Unknown]:  Taipei
您所在的州及省份名稱為何?
  [Unknown]:  Taiwan
此單位的兩個字母國別代碼為何?
  [Unknown]:  TW
CN=Hans, OU=Unknown, O=Unknown, L=Taipei, ST=Taiwan, C=TW 正確嗎?
  [否]:  Y
針對 CN=Hans, OU=Unknown, O=Unknown, L=Taipei, ST=Taiwan, C=TW 產生有效期 10,000
 天的 2,048 位元 RSA 金鑰組以及自我簽署憑證 (SHA256withRSA)
輸入 <rdss> 的金鑰密碼
        (RETURN 如果和金鑰儲存庫密碼相同):
新憑證 (自我簽署):
...
[儲存 rdss.keystore]

密碼千萬要記牢,小蛙在開發照照明星臉的時候就是忘了密碼,花了兩天的時間把所有可能的密碼都試過一次才終於式出來><(前後兩個基本上用一樣的密碼就好了,免得忘記),完成後可以看到在執行keytool的目錄下出現了一個剛剛設定的「rdss.keystore」,如此一來就完成自己的簽署檔案囉!
接下來簽署的動作可以直接透過Eclipse工具來完成,到要匯出的專案上點選滑鼠右鍵-> Adroid Tools -> Export Signed Application Package…

選擇要匯出的專案

選取剛剛產生的.keystore檔案,並且輸入密碼。

選擇alias,並輸入密碼。

設定APK產生的位置,大功告成。

產生出來的RDSS.apk就可以直接上傳到market囉!

3 則留言

  1. 請問一下我有apk要上傳至play商店但出現要簽署才能放上去
    我有看到您的文章想請問您keytool這個工具要去那下載?
    好像一直都找不到這個工具,大大如果有可以傳給我嗎
    謝謝您

    • Dear kevin:
      keytool 是安裝完 JDK 之後就會存在的工具喔!
      keytools.exe 下載點
      (不確定在不同環境或不同 JDK 版本執行會不會有問題)
      建議您先確定 JDK 安裝的目錄,小蛙的新環境(Windows 8)裡面,
      keytools 目錄在 C:\Program Files\Java\jdk1.7.0_45\bin。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *