http://blog.k-res.net/archives/1229.htmlhtml
http://blog.csdn.net/superbigcupid/article/details/48230675android
最近開始研究Google Play的In-app Billing IAB內置計費API,發現一個比較煩人的問題就是測試時應用必須通過正式簽名(其實接入各類SDK時,不少開放平臺都須要簽名的),而默認Eclipse ADT調試運行使用的是臨時生成的Debug專用證書,默認爲C:\Users\XXX\.android\debug.keystore。app
因而每次調試內置計費必須使用ADT的Export Signed Application Package打帶正式簽名的包,比較麻煩。後來發現ADT容許自定義調試用證書,在Window->Preferences->Android->Build->Custom debugkeystore這裏,試了一下選擇正式證書後提示:」Keystore was tampered with, or password was incorrect」,以下圖所示:
其實這個界面並無提供輸入Keystore密碼,選擇別名之類的地方,因此就感到很是奇怪了,查了一下官方文檔發現,即便是自定義的調試證書,也須要保證和默認證書同樣的密碼,別名alias和別名密碼。eclipse
文檔中提到的默認證書信息以下:工具
Keystore name: 「debug.keystore」
Keystore password: 「android」
Key alias: 「androiddebugkey」
Key password: 「android」
CN: 「CN=Android Debug,O=Android,C=US」post
遵循這個規則就能夠用自定義調試證書了。不過仔細想一想感受這功能這樣非常雞肋,但願之後版本的ADT會改進吧。測試
自定義調試證書的密碼和alias命名以及alias密碼都是有規矩的。其實Android應用開發接入各類SDK時會發現,有不少SDK是須要靠package name和keystore的指紋hash來識別的(百度地圖SDK、Facebook SDK等等…),這樣若是使用默認自動生成的debugkeystore的話就會給開發調試工做帶來一些麻煩。這時能夠經過修改正式的release keystore,生成一份「遵照規矩」的臨時自定義調試證書給開發時用,就方便多了,具體方法以下:ui
1. 首先固然是先複製一份正式證書出來做爲要修改成的臨時調試證書。spa
2. 修改keystore密碼的命令(keytool爲JDK帶的命令行工具):.net
keytool -storepasswd -keystore my.keystore
其中,my.keystore是複製出來的證書文件,執行後會提示輸入證書的當前密碼,和新密碼以及重複新密碼確認。這一步須要將密碼改成android。
3. 修改keystore的alias:
keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey
這一步中,my_name是證書中當前的alias,-destalias指定的是要修改成的alias,這裏按規矩來,改成androiddebugkey!這個命令會前後提示輸入keystore的密碼和當前alias的密碼。(注意在2.中已經修改密碼爲android)
4. 修改alias的密碼:
keytool -keypasswd -keystore my.keystore -alias androiddebugkey
這一步執行後會提示輸入keystore密碼,alias密碼,而後提示輸入新的alias密碼,一樣,按規矩來,改成android!(注意在2.中已經修改密碼爲android)
以上幾個操做執行後,my.keystore就是符合規矩的debug keystore了,接着在Eclipse的ADT設置中選中這個custom debug keystore便可,以下(而後apply就能夠了):
同時還能夠看到證書的MD5以及SHA1指紋。
PS:以上3步命令行並無前後順序。