uniapp開發Android平臺簽名證書(.keystore)生成全流程

最近開發了一款微信公衆號的應用,在項目驗收的時候客戶非要要一個APP端,之前沒搞過,一邊學習一邊開發,最終完成了我的第一款App,其中遇到很多問,把一些學習到的內容記錄一下。本篇文章記錄如何生成Android平臺的自有證書過程。

一、爲什麼要生成keystore
Android平臺打包發佈apk應用,需要使用數字證書(.keystore文件)進行簽名,用於表明開發者身份。所以在打包發佈的時候必須要一個數據證書。

    Android證書的生成是自助和免費的,不需要審批或付費。網上有專門的生成網站,也可以使用JRE環境中的keytool命令生成。作爲一個程序員怎麼偷懶呢,所以全流程走了一遍,以下是windows平臺生成證書的方法。

1、安裝JRE環境
可從Oracle官方下載jre安裝包:https://www.oracle.com/technetwork/java/javase/downloads/index.html,下載後安裝,以下操作以
jre安裝目錄爲“C:\Program Files (x86)\Java\jre1.8.0_73\bin”爲例,實際操作時請修改爲自己安裝目錄。
安裝完成後建議將JRE安裝路徑添加到系統環境變量,打開命令行(cmd),輸入以下命令:

set PATH=%PATH%;"C:\Program Files (x86)\Java\jre1.8.0_73\bin"

通過命令行添加環境變量,不用重啓電腦,可以直接使用。

2、生成簽名證書
使用keytool -genkey命令生成證書:

//第一步:進入工作目錄,例如我的目錄F:\keystore

cd F:\keystore:

f:

//第二步:生成證書

keytool -genkey -alias testkey -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore

testkey是證書別名,可修改爲自己想設置的字符,建議使用英文字母和數字
test.keystore是證書文件名稱,可修改爲自己想設置的文件名稱,也可以指定完整文件路徑
36500是證書的有效期,表示100年有效期,單位天,建議時間設置長一點,避免證書過期
回車後根據提示完成設置即可創建證書文件,參考實例內容如下:

Enter keystore password: //輸入證書文件密碼,輸入完成回車
Re-enter new password: //再次輸入證書文件密碼,輸入完成回車
What is your first and last name?
[Unknown]: qhweb //輸入名字和姓氏,輸入完成回車
What is the name of your organizational unit?
[Unknown]: qhweb //輸入組織單位名稱,輸入完成回車
What is the name of your organization?
[Unknown]: qhweb //輸入組織名稱,輸入完成回車
What is the name of your City or Locality?
[Unknown]: xn //輸入城市或區域名稱,輸入完成回車
What is the name of your State or Province?
[Unknown]: qh //輸入省/市/自治區名稱,輸入完成回車
What is the two-letter country code for this unit?
[Unknown]: cn//輸入國家/地區代號(兩個字母),中國爲CN,輸入完成回車
Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?
[no]: y //確認上面輸入的內容是否正確,輸入y,回車

Enter key password for <testkey>
(RETURN if same as keystore password): //確認證書密碼與證書文件密碼一樣(HBuilder|HBuilderX要求這兩個密碼一致),直接回車就可以
以上命令運行完成後就會生成證書,路徑爲“F:\keystoretest.keystore”。

注意:上述信息填寫要規範,亂填有可能會影響應用上架應用市場。

3、查看證書信息
在CMD命令窗口中可以使用命令查看:

keytool -list -v -keystore test.keystore
Enter keystore password: //輸入密碼,回車
輸入密碼回車後會輸出以下格式信息:

其中證書指紋信息(Certificate fingerprints):

MD5:證書的MD5指紋信息(安全碼MD5)
SHA1:證書的SHA1指紋信息(安全碼SHA1)
SHA256:證書的SHA256指紋信息(安全碼SHA245)
注意事項
uniapp雲端打包默認會添加V1/V2簽名,已知V1簽名不支持2048位的DSA算法,使用2048-bit DSA key雲端打包可能失敗。

解決方法

第一種方法:重新生成證書,在生成證書命令中添加“-keyalg RSA”參數指定使用RSA算法
第二種方法:設置miniSdkVersion大於等於24,因爲V2簽名需Android7及以上設備才支持,設置miniSdkVersion大於等於24表示不支持android7以下設備,從而不需要包含V1簽名,設置miniSdkVersion詳情參考:Android平臺API等級配置 - minSdkVersion&targetSdkVersion - DCloud問答
具體可以參考官網的證書生成指南:Android平臺簽名證書(.keystore)生成指南 - DCloud問答

共有證書具體可以參考官網:Android平臺雲端打包 - 公共測試證書 - DCloud問答

二、hbulider中打包
證書準備完成後就可以在Hbuilder中打包了,打包中選擇自有證書,然後輸入剛纔設置的別證書別名跟祕鑰,然後就ok 了。

好了,記錄到這裏就結束了。

說明:命令keytool -list -v -keystore test.keystore可能會常用到,因爲好多APP端的接口都會用到證書的SHA1:證書的SHA1指紋信息(安全碼SHA1),例如高德地圖key申請,uniPush推送配置等等。

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