cordova環(huán)境搭建以及將vue的webapp打包成ios和安卓的debug和release版本app(https://segmentfault.com/a/1190000015228134)
簡介
cordova可以幫我們將一個webApp打包成安卓apk和ios的App,本文詳細(xì)描述了cordova的環(huán)境搭建以及打包vue項(xiàng)目的webapp成手機(jī)端的App的詳細(xì)過程,打包的app分為debug版本的調(diào)試版以及能上線的release版本,其中都會做詳細(xì)介紹,文章中會也會描述整個環(huán)節(jié)遇到的坑以及解決辦法。
cordova環(huán)境搭建
安裝node以及全局安裝cordova,node安裝自行百度,安裝完node在命令行執(zhí)行
sudo npm install -g cordova
然后創(chuàng)建cordova項(xiàng)目,命令行輸入
cordova create hello com.example.hello HelloWorld
hello指的是創(chuàng)建的文件夾名稱,cordova項(xiàng)目的文件夾名稱
com.example.hello指的是做的app的id
HelloWorld是App的名字
現(xiàn)在cordova項(xiàng)目已經(jīng)搭建完畢
安卓環(huán)境配置
打包安卓app需要配置java的環(huán)境變量和Android Stuido,Android Studio集成了安卓開發(fā)的SDK什么的,下載完就可以了,java和android Studio下載完成之后還要下載Gradle(一個構(gòu)建工具)JAVA傳送門 Android Studio Gradle其中下載gradle有一個坑,gradle支持mac的兩個包管理工具下載,Homebrew和MacPorts,這兩個安裝一個就可以了,我選的是MacPorts,但是在安裝的時(shí)候卡住,網(wǎng)上也又很多安裝的時(shí)候卡住的問題,網(wǎng)上試了很多方法都不可以,最后我是命令行強(qiáng)制重啟了mac,然后在重新安裝之后才安好了,homebrew我沒試,建議用homebrew下載;
友情提示:網(wǎng)絡(luò)最好能翻墻
ios環(huán)境配置
首先需要去App Store下載Xcode,
下載完成后在命令行執(zhí)行
xcode-select --install
然后執(zhí)行
sudo npm install -g ios-sim
sudo npm install -g ios-deploy
最后還要安裝CocoaPods,執(zhí)行
sudo gem install cocoapods
下載完成后ios環(huán)境應(yīng)該就可以了;
vue項(xiàng)目改動
vue項(xiàng)目要在index.html里引入cordova.js[圖片上傳失敗...(image-7f7713-1535991672530)]
修改config中的index.js里的文件
修改build中
assetsSubDirectory: 'static',
assetsPublicPath: '/',
為
assetsSubDirectory: '',
assetsPublicPath: '',
然后運(yùn)行項(xiàng)目看看能不能起來,如果起得來就
npm run build
打包vue項(xiàng)目,將打包好的dist目錄里的文件全部拷貝到cordova項(xiàng)目中www文件夾,將www文件夾的內(nèi)容全部替換
然后命令行
cd hello
進(jìn)入文件夾
cordova platform add ios --save
cordova platform add android --save
分別對應(yīng)ios和android
此時(shí)可以執(zhí)行
cordova requirements
查看環(huán)境是否安裝完全,如果又報(bào)錯,按照提醒下載就行了
打包安卓debug版本
cordova build android
打包成功會顯示打包的apk路徑,apk名字叫app-debug.apk可以安裝在安卓手機(jī)上運(yùn)行
ios打包完成需要在xcode里運(yùn)行,然后在模擬器看效果
安卓release版本打包
Android app 的打包流程大致分為 build , sign , align 三部分。
sign是為 APK 簽名。不管是哪一種 APK 都必須經(jīng)過數(shù)字簽名后才能安裝到設(shè)備上,簽名需要對應(yīng)(keystore),大部分情況下APK都采用的自簽名證書,就是自己生成證書然后給應(yīng)用簽名。
align是壓縮和優(yōu)化的步驟,優(yōu)化后會減少 app 運(yùn)行時(shí)的內(nèi)存開銷。
首先,我們生成一個 release APK 。這點(diǎn)在 cordova build 命令后加一個 --release 參數(shù)局可以。如果成功,你可以在 release 目錄下看到一個 android-release-unsigned.apk 文件。
cordova build android --release
Sign
我們需要先生成一個數(shù)字簽名文件(keystore)。這個文件只需要生成一次。以后每次 sign 都用它。
keytool -genkey -v -keystore release-key.keystore -alias cordova-demo -keyalg RSA -keysize 2048 -validity 10000
Keytool 是用于管理密鑰和證書的工具,使用戶和管理員能管理自己的公 / 私鑰對以及相關(guān)的證書。
-genkey:用于生成公 / 私密鑰對
-v:詳細(xì)輸出
-keystore:秘鑰庫名稱
-alias:要處理的條目的別名
-keyalg:秘鑰算法名稱
-keysize:秘鑰長度
-validity:有效天數(shù)
執(zhí)行后會要求設(shè)置 keystore 的密碼和 key 的密碼,要記得!完成后會在根目錄有一個release-key.keystore的文件
然后對我們的android-release-unsigned.apk文件進(jìn)行簽名
首先我們要把要簽名的android-release-unsigned.apk移動到和release-key.keystore同一個目錄下
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore release-key.keystore android-release-unsigned.apk cordova-demo
這個命令中需要傳入證書名 release-key.keystore ,要簽名的 APK android-release-unsigned.apk ,和別名 cordova-demo 。簽名過程中需要先后輸入 keystore 和 key 的密碼。命令運(yùn)行完后,這個 APK 就已經(jīng)改變了。注意這個過程沒有生成新文件。
-verbose: 簽名/驗(yàn)證時(shí)輸出詳細(xì)信息
-sigalg:簽名算法的名稱
-digestalg:摘要算法的名稱
-keystore:秘鑰庫位置
最后我們要用 zipalign 壓縮和優(yōu)化 APK
找到zipalign.exe的所在目錄,一般在資源/Android/SDK/build-tools/20.7.03/
在這個文件夾下打開終端,將簽名完的apk移到這里,然后執(zhí)行,不移動apk需要填寫正確路徑
./zipalign -v 4 android-release-unsigned.apk cordova-demo.apk
這一步會生成最終的 APK,我們把它命名為 cordova-demo.apk 。它就是可以直接上傳到應(yīng)用商店的版本。