一.ionic 自動簽名的好處與壞處(ionic build android/ios) 好處在於:可以直接安裝手機上進行安裝測試,也可以上傳Android或者iOS平臺 不好的地方在於:你的電腦環境變了換電腦了,再打包出來的簽名就會不一樣了,再打包出來的app就無法覆蓋之前的版本,會報簽名不一樣的問 ...
一.ionic 自動簽名的好處與壞處(ionic build android/ios)
好處在於:可以直接安裝手機上進行安裝測試,也可以上傳Android或者iOS平臺
不好的地方在於:你的電腦環境變了換電腦了,再打包出來的簽名就會不一樣了,再打包出來的app就無法覆蓋之前的版本,會報簽名不一樣的問題
二.不採用自動簽名
1.打包運行 命令 ionic build --release android (安卓為例)
2.生成證書文件
keytool -genkey -v -keystore test.keystore -alias demo.keystore -keyalg RSA -validity 20000
命令運行之後會讓你填寫密鑰庫口令,
再次確認,之後是一些相關的個人以及公司信息,沒輸入完一次,回車就行,
之後還會有一個密鑰庫的口令,可以和密鑰庫的一樣或者重新寫;
keytool是工具名稱,-genkey意味著執行的是生成數字證書操作,-v表示將生成證書的詳細信息列印出來;
-keystore test.keystore 證書的文件名;
-alias sign.keystore 表示證書的別名;
-keyalg RSA 生成密鑰文件所採用的演算法;
-validity 20000 該數字證書的有效期,單位天;
出現的問題:
(1).keytool不是內部或可用命令,這裡需要把這個路徑配置到這個工具的上級文件夾,
比如我的keytool.exe是在Java\jdk1.8.0_121\bin\這個文件下,配置目錄到
Java\jdk1.8.0_121\bin\;最後這個\不要丟掉,配置的時候註意;(分號)沒有了要加上;
(2).輸入密鑰庫口令的時候輸入但並不在視窗上展示,其實已經輸上了;
3.對生成的未簽名的apk進行簽名
jarsigner -verbose -keystore /yourpath/demo.keystore -signedjar signafter.apk android-release.apk sign.keystore
jarsigner是工具名稱,-verbose表示將簽名過程中的詳細信息列印出來;
-keystore /yourpath/test.keystore 之前生成的證書 找到證書的位置
signafter.apk 簽名後的apk
android-release.apk 需要簽名的apk
sign.keystore 證書的別名
註意的問題:
(1).配置的變數目錄要和上邊的類似,否則也會報命令不可用的問題.
位於jdk1.6.0_24\bin\目錄下
(2).運行這個命令的時候需要切換目錄到你需要簽名的apk的目錄,否則會報錯jar文件無法打開
(3).如果你是在你簽名證書存放的目錄下運行的這個命令,那麼你需要把你要簽名的apk複製到這個目錄下,否則也會報錯jar文件無法打開
4.對簽名過的apk進行優化,可以不優化
zipalign -v 4 signafter.apk signend.apk
1)zipalign是工具名稱,-v表示在DOS視窗列印出詳細的優化信息;
2) 表示對已簽名文件signafter.apk進行優化,優化後的文件名為 signend.apk
5.查看apk簽名
Mac下,把apk的尾碼改為zip打開,然後查看META-INF下的.RSA文件
Windows下,用winner打開apk,同樣查看.RSA文件
執行命令
keytool -printcert -file META-INF/CERT.RSA
註意後面文件的名稱與路徑即可,可以查看到簽名信息,主要是查看Certificate fingerprints下的MD5與SHA1,這兩個不同就代表著簽名不同
6.利用證書文件當換電腦打包同一個app時,使app簽名不變
正在研究中,希望有看到的大神幫補充一下,謝謝