準(zhǔn)備工作
keytool:該工具位于jdk安裝路徑的bin目錄下北发;
jarsigner:該工具位于jdk安裝路徑的bin目錄下劲蜻;
zipalign:該工具位于Android-sdk-windows/tools/目錄下秀又;
接下來(lái)進(jìn)入正題:
1.我們需要生成未經(jīng)簽名的apk
Android app 的打包分為 debug 和 release 兩種烁竭,后者是用來(lái)發(fā)布到應(yīng)用商店的版本猎荠。在開發(fā)ionic項(xiàng)目時(shí)伊磺,使用默認(rèn)命令(ionic cordova build android)打包出來(lái)的是debug apk文件官套。要打包 release 版本的apk文件酒奶,只需要在后面加一個(gè) --release 參數(shù)即可(在最下方我會(huì)把打包命令貼出)打包出來(lái)的文件名稱:“android-release-unsigned.apk”(這個(gè)apk文件就是 沒有使用默認(rèn)簽名的 文件)
2.簽名? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.1
使用keytool 生成數(shù)字證書
keytool -genkey -v -keystore myApp.keystore -alias myApp.keystore -keyalg RSA -validity 36500
keytool是工具名稱-genkey意味著執(zhí)行的是生成數(shù)字證書操作
-v表示將生成證書的詳細(xì)信息打印出來(lái),顯示在dos窗口中
-keystore myApp.keystore表示生成的數(shù)字證書的文件名為“myApp.keystore”(myApp可以取自己的名字)
-alias myApp.keystore表示證書的別名為“myApp.keystore”奶赔,可以不和上面的文件名一樣
-keyalg RSA表示生成密鑰文件所采用的算法為RSA
-validity 36500 表示該數(shù)字證書的有效期為36500天惋嚎,意味著36500天之后該證書將失效
2.2? 執(zhí)行該命令過程會(huì)要求輸入密鑰口令以及其他信息,看著填就行
2.3?使用jarsigner為app簽名
jarsigner -verbose -keystore myApp.keystore -signedjar /Users/oukokusakai/APK/myApp.apk??/Users/oukokusakai/APK/android-release-unsigned.apk?myApp.keystore
-verbose? ? 表示將簽名過程中的詳細(xì)信息打印出來(lái)站刑,顯示在控制臺(tái)窗口中
-keystore myApp.keystore? ? 表示簽名所使用的數(shù)字證書所在位置
-signedjar (后面的路徑是你要簽名apk的路徑)表示給Apk工程目錄下的android-armv7-release-unsigned.apk文件簽名另伍,簽名后的文件為該路徑下的myApp.apk
myApp.keystore? ? ? 表示證書的別名,對(duì)應(yīng)于生成數(shù)字證書時(shí)-alias參數(shù)后面的名稱
2.4?到此绞旅,其實(shí)已經(jīng)生成了一個(gè)可以發(fā)布到應(yīng)用市場(chǎng)的apk了摆尝,如果想要更好,那么建議再使用ADT的zipalign對(duì)apk進(jìn)行壓縮一下因悲。
轉(zhuǎn)載:https://blog.csdn.net/xqq580231/article/details/78930497
?有不懂的歡迎留言問~