簽署你的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囉!
請問一下我有apk要上傳至play商店但出現要簽署才能放上去
我有看到您的文章想請問您keytool這個工具要去那下載?
好像一直都找不到這個工具,大大如果有可以傳給我嗎
謝謝您
Dear kevin:
keytool 是安裝完 JDK 之後就會存在的工具喔!
keytools.exe 下載點
(不確定在不同環境或不同 JDK 版本執行會不會有問題)
建議您先確定 JDK 安裝的目錄,小蛙的新環境(Windows 8)裡面,
keytools 目錄在 C:\Program Files\Java\jdk1.7.0_45\bin。