ionic打包簽名akp(檢視apk簽名)
ionic進行開發完專案後,需要上架。此文是介紹使用命令進行Android端打包與簽名。ios端傳送門:ios打包上架
在Android端,我們需要打包apk,並且簽名然後上傳至各應用商店。
首先是關於apk簽名,Android程式的安裝是以包名(package name)進行區分的,就是同樣的包名會被認作是同一個程式。這樣就可以進行升級、替換。但是包名是一個可以被檢視的字串,這樣就可能被偽造,然後其他人就可以自己建立一個應用去替代你的應用,結果可想而知。而簽名就是為了防止這樣的情況發生,當你的程式被簽名後安裝,只有同樣包名與簽名的程式才能被替換安裝。而簽名是不可能簡單被偽造的,從而保證了程式的安全性。
好的,接下來就是ionic下進行打包與安裝了,這裡是通過命令實現的,之後會分享通過eclipse或者android studio來打包與簽名。
一、打包apk
ionic下打包生成apk有兩種命令
ionic bulid android
ionic build --release android
第一個命令生成的是一個Cordova-debug.apk,很明顯是用來進行本地開發測試使用的,注意這個apk是有簽名的,所以他能被安裝在手機上,但是這個不能用來上架(親身探過坑),因為只有在絕對同樣的環境下進行打包,才能保證這個apk的簽名相同,意味著你這臺機器必須始終保持正常並且系統和打包工具等不作修改。這明顯是不合理的。
所以,我們必須採用生產的方式打包,就是第二個命令,這個命令生成的是一個無簽名的apk,他無法安裝在手機上,必須進行簽名。
二、簽名apk
生成簽名(.keystore)檔案
keytool -genkey -v -keystore demo.keystore -alias demo.keystore -keyalg RSA -validity 20000
keytool是工具名稱,-genkey意味著執行的是生成數字證書操作,-v表示將生成證書的詳細資訊打印出來;
-keystore demo.keystore 證書的檔名;
-alias demo.keystore 表示證書的別名
-keyalg RSA 生成金鑰檔案所採用的演算法;
-validity 20000 該數字證書的有效期;
輸入後會讓你回答關於你公司和地區的一些問題,回答完後截圖記錄就行。
簽名apk
jarsigner -verbose -keystore /yourpath/demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
說明:
jarsigner是工具名稱,-verbose表示將簽名過程中的詳細資訊打印出來;
-keystore /yourpath/demo.keystore 之前生成的證書
-signedjar demo_signed.apk 簽名後的apk
demo.apk 需要簽名的apk
demo.keystore 證書的別名
附:檢視apk的簽名
Mac下,把apk的字尾改為zip開啟,然後檢視META-INF下的.RSA檔案
Windows下,用winner開啟apk,同樣檢視.RSA檔案
執行命令
keytool -printcert -file META-INF/CERT.RSA
注意後面檔案的名稱與路徑即可,可以檢視到簽名信息,主要是檢視Certificate fingerprints下的MD5與SHA1,這兩個不同就代表著簽名不同。
如果不正確處,請予以指正~3Q