原文:https://segmentfault.com/a/1190000013755356
紅色字體爲修改部分
1.cordova命令創建一個項目
cordova create testApp com.test.app
這裏testAPP是項目的名字,testApp com.test.app是APP的包名,可以隨意取,最好按照“com.” 開頭cd testApp
進入到剛剛創建的項目目錄,可以看到如下文件目錄:
說說目錄中文件的用處
- hooks:裏面就一個readme.md文件,沒什麼卵用
- platfroms:通過cordova platforms add android 添加的安卓相關文件就放在裏面,這個文件夾比較重要,打包生成的apk也在這個文件夾下
- plugins:cordova安裝的插件在此文件夾下
- res:存放資源文件,我沒有用到過
- www:這個文件下寫我們的項目,如html,js,css等代碼
- .npmignore:忽略文件,沒什麼用處
- config.xml:打包項目的配置文件,可以修改APP的包名,應用名稱等
2.cordova命令添加Android平臺
cordova platforms add android
(如果是想移除Android平臺的,可以運行cordova platforms remove android,也可以安裝指定版本的Android平臺,cordova platforms add [email protected]
)
運行命令後,會生成一些新文件夾,node_modules是依賴文件,在platfroms下面會生成新加入的Android平臺文件
另外:
安裝插件 cordova plugin add 插件名,如:cordova plugin add cordova-hot-code-push-plugin
卸載插件 cordova plugin remove 插件名,如:cordova plugin remove cordova-hot-code-push-plugin
查看安裝的插件列表 cordova plugin list
3.cordova命令編譯打包apk
cordova build android
執行命令後,會在testApp\platforms\android\build\outputs\apk目錄下生成一個android-debug.apk,這就完成了一個簡單的打包,把這個apk安裝在手機上,就可以運行了。
但是,上面生成的是一個測試的apk,沒有任何簽名信息,不能上架到各大應用平臺,下面來講一下打包一個有簽名的apk
apk簽名
1.第一步
在項目根目錄下運行命令cordova build --release android
,會在testApp\platforms\android\build\outputs\apk目錄下生成一個android-release-unsigned.apk
2.第二部
運行命令keytool -genkeypair -alias name.keystore -keyalg RSA -validity 4000 -keystore name.keystore
執行以上命令後,會要求填寫密碼口令,單位信息等等,這裏需要記住錄入的密碼,因爲最後編譯apk的時候還需要用到,在所有的選項都錄入完後,按回車,會在項目的根目錄下生成一個name.keystore
的簽名文件,裏面就包含剛剛錄入的一些信息。
會在根目錄下生成一個name.keystore
,這是apk獨有的簽名證書,如下圖(命令中的name.keystore
中的name是簽名文件的名字,這裏可以任意取名,我習慣用name.keystore)
3.第三部
將testApp\platforms\android\build\outputs\apk目錄下生成一個android-release-unsigned.apk重命名爲name_unsigned.apk(我爲了與name.keystore對應),並將它和根目錄下的name.keystore
放在同一目錄下
4.第四部
進入dabao
這個文件夾下,運行命令jarsigner -verbose -keystore name.keystore -signedjar name.apk name_unsigned.apk name.keystore
,輸入之前簽名的錄入的密碼,經過編譯,會生成最後的簽名版本 name.apk.
上面打包缺乏時間戳,這裏更正爲:
這個時間戳提供商可以替換爲任意一個有效遠程時間戳鏈接
jarsigner -verbose -keystore name.keystore -signedjar name.apk app-release-unsigned.apk name.keystore -tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp