cordova+vue-cli4構(gòu)建app

  • 歡迎加入前端交流群來獲取視頻資料以及前端學(xué)習(xí)資料:749539640 *

本文會詳細(xì)的介紹如何使用cordova來打包vue項目桑滩,生成app(android)

你將學(xué)會:

  • 基于cordova構(gòu)建vue項目app
  • 自定義app名字/圖標(biāo)/啟頁圖片
  • 自動構(gòu)建腳本

Cordova(中文官網(wǎng)詳細(xì)介紹)是一個開源的移動開發(fā)框架懂更。允許你用標(biāo)準(zhǔn)的web技術(shù)-HTML5,CSS3和JavaScript做跨平臺開發(fā),應(yīng)用的實現(xiàn)是通過web頁面憔购,默認(rèn)的本地文件名稱是index.html
大體思路就是把打包好的vue項目放在cordova的Web App中來啟動诚隙;我們開始吧

1.環(huán)境準(zhǔn)備

2.驗證環(huán)境

image
  • 項目目錄
cordova
│   cordova-project
│   my-app   

這里把cordova項目和vue項目平級存放格带,也可以嵌套(自行看情況)

3.新建cordova項目

  • 3.1新建cordova目錄
  • 3.2在cordova文件夾下新建cordova項目
mkdir cordova
cd cordova
cordova create cordova-project
  • 3.3添加Android平臺
cd cordova-project
cordova platform add android --save

要構(gòu)建和運行App邪媳,你需要安裝每個你需要平臺的SDK。另外檬洞,當(dāng)你使用瀏覽器開發(fā)你可以添加 browser平臺狸膏,它不需要任何平臺SDK。

  • 3.4 檢測你是否滿足構(gòu)建平臺的要求:
cordova requirements
image
  • 3.5打包app安裝到手機上(前提是手機連上電腦并開啟USB調(diào)試模式)
cordova run android
  • 或者只是打包apk
cordova build android

apk生成目錄:cordova-project/platforms/android/app/build/outputs/apk/debug/app-debug.apk

默認(rèn)生成的cordova app 圖標(biāo):


image

運行界面:


image

進行到這里的時候添怔,cordova部分先告一段落湾戳,下面開始第二部分

4.新建vue項目(vue-cli

cd cordova
vue create my-app
//配置里我們選擇默認(rèn)項就行default (babel, eslint)
cd my-app
npm install 
npm run serve
  • 4.1瀏覽器運行vue項目界面:
image
  • 4.2打包vue項目
  • 配置vue.config.js
  • my-app目錄下新建vue.config.js(這里只做路徑配置,其他配置項可詳情vue.config.js

默認(rèn)情況下广料,cordova create命令生成基于web的應(yīng)用程序的骨骼砾脑,項目的主頁是 www/index.html 文件。

'use strict'

module.exports = {
  publicPath: './',
//這個值也可以被設(shè)置為空字符串 ('') 或是相對路徑 ('./')艾杏,這樣所有的資源都會被鏈接為相對路徑韧衣,這樣打出來的包可以被部署在任意路徑,也可以用在類似 Cordova hybrid 應(yīng)用的文件系統(tǒng)中糜颠。
  outputDir: '../cordova-project/www',
//將打包目錄指向/cordova-projec下的www
  productionSourceMap: false,
//如果你不需要生產(chǎn)環(huán)境的 source map汹族,可以將其設(shè)置為 false 以加速生產(chǎn)環(huán)境構(gòu)建。

}

  • 配置好之后我們進行打包
npm run build 
  • 4.3打包apk安裝到手機上
cd cordova-project
cordova run android 

或者是打包apk

cd cordova-project 
cordova build android 

運行至手機界面:


image

5.瀏覽器調(diào)試app

運行cordova run android后其兴,app會裝到手機上
谷歌瀏覽器輸入:chrome://inspect/#devices
看到如下界面:

image

找到自己的設(shè)備(手機中也需要運行app)顶瞒,點擊inspect,接下來就可以調(diào)試樣式了
image

6.更換app圖標(biāo)以及app名字以及app啟動頁

先隨便準(zhǔn)備2張圖片(圖標(biāo)以及啟動頁圖片)

  • 6.1更改圖標(biāo):

image

進入文件夾:cordova/cordova-project/res/icon/android
將圖片進行替換即可(名字/圖片格式推薦png)
image

替換為:
image

  • 6.2更改啟動頁圖片:
image

安裝splashscreen插件:

cd cordova-project
cordova plugin add cordova-plugin-splashscreen

進入文件夾:/cordova/cordova-project/res/screen/android
將圖片進行替換即可,這里只替換了豎屏的(名字/圖片格式推薦png)

image

替換為
image

  • 打開config.xml
  • 6.3更改名字(name標(biāo)簽內(nèi)的內(nèi)容進行更改即可)
 <name>vueApp</name>
  • 6.4更改配置項

添加圖標(biāo)以及啟動頁元旬,在<platform name="android"> </platform>添加如下代碼

   <platform name="android">
        <allow-intent href="market:*" />
        <icon density="ldpi" src="res/icon/android/icon-36-ldpi.jpg" />
        <icon density="mdpi" src="res/icon/android/icon-48-mdpi.jpg" />
        <icon density="hdpi" src="res/icon/android/icon-72-hdpi.jpg" />
        <icon density="xhdpi" src="res/icon/android/icon-96-xhdpi.jpg" />
        <splash density="port-ldpi" src="res/screen/android/screen-ldpi-portrait.png" />
        <splash density="port-mdpi" src="res/screen/android/screen-mdpi-portrait.png" />
        <splash density="port-hdpi" src="res/screen/android/screen-hdpi-portrait.png" />
        <splash density="port-xhdpi" src="res/screen/android/screen-xhdpi-portrait.png" />
        <preference name="ShowSplashScreenSpinner" value="false" /><!-- 啟動頁面淡入淡出的效果 -->
    </platform>
  • 打包查看
    圖標(biāo)以及名字:


    image

    啟動頁:


    image

7.自動構(gòu)建腳本(shell)

每次打包需要執(zhí)行如下命令榴徐,很麻煩

cd cordova/my-app
npm install
npm run build
cd ../cordova-project
cordova build android /cordova run android

我們可以在cordova目錄下新建build.sh文件

#!/usr/bin/env bash



PLATFORM=android
#!1(not clean)   0(clean)
TYPE=build
#!(-d)debug   build
TYPE=$1

 
function echo_action() {
    INFO_START='\033[1;36m'
    INFO_END='\033[0m'
    echo -e "\xF0\x9F\x90\xB6 ${INFO_START}$1${INFO_END}"
}

function echo_info() {
    INFO_START='\033[1;32m'
    INFO_END='\033[0m'
    echo -e "\xF0\x9F\x92\x9A ${INFO_START}$1${INFO_END}"
}

function echo_warn() {
    INFO_START='\033[1;33m'
    INFO_END='\033[0m'
    echo -e "\xF0\x9F\x92\x9B ${INFO_START}$1${INFO_END}"
}

function echo_err() {
    INFO_START='\033[1;31m'
    INFO_END='\033[0m'
    echo -e "\xF0\x9F\x92\x94 ${INFO_START}$1${INFO_END}"
}


function addAndroidPlatform() {
    echo_action "Start add android platform ..."
     cordova platform add android
    if [ "$?" != "0" ]; then
        return 1
    fi
    return 0
}



function installDependencesCordova() {
    echo_action "Installing Cordova dependences ..."
    npm install
    echo_info " Cordova Dependences installed"
}


function installDependences() {
    echo_action "Installing dependences ..."
    echo_action "cd ./my-app"
    cd ./my-app
    npm install
    echo_info "Dependences installed"
}


function buildWebapp() {
    echo_action "Start building my-app..."
    npm run build
    echo_info "Build Command:  npm run build"

}

function installPlugins() {
    addAndroidPlatform
    echo_info "Install App Updater plugin finished"
}

function buildApk() {
    echo_action "Start building ..."
    if [ "${TYPE}" == "debug" ]; then
          cordova run android
          echo_info "Build Command:  cordova run android"
    else
        cordova build android
         echo_info "Build Command:  cordova build android"
    fi
}


echo_info "Build for ${PLATFORM}"
if [ "${TYPE}" == "debug" ]; then
        echo_info "Build Command:  cordova run android"
else
        echo_info "Build Command:  cordova build android"
fi


installDependences
if [ "$?" == "0" ]; then
    echo_info "All dependences have been installed successfully."
else
    echo_err "Failed to install dependences."
fi

buildWebapp
if [ "$?" == "0" ]; then
    echo_info "All things done successfully."
else
    echo_err "Build failed."
fi

echo_action "cd ../cordova-project"
cd ../cordova-project

installPlugins
if [ "$?" == "0" ]; then
    echo_info "All plugins have been installed successfully."
else
    echo_err "Failed to install plugins."
fi

installDependencesCordova
if [ "$?" == "0" ]; then
    echo_info "All dependences have been installed successfully.."
else
    echo_err "Failed to install dependences."
fi


buildApk
if [ "$?" == "0" ]; then
    echo_info "All things done successfully."
else
    echo_err "Build failed."
fi

這樣我們下次就可以

cd cordova
./build.sh build //打包apk
./build.sh debug //調(diào)試至手機

8.vue中使用cordova,詳情vue-cordova

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匀归,隨后出現(xiàn)的幾起案子坑资,更是在濱河造成了極大的恐慌,老刑警劉巖穆端,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袱贮,死亡現(xiàn)場離奇詭異,居然都是意外死亡体啰,警方通過查閱死者的電腦和手機攒巍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荒勇,“玉大人柒莉,你說我怎么就攤上這事」料瑁” “怎么了兢孝?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我跨蟹,道長雳殊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任喷市,我火速辦了婚禮相种,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘品姓。我一直安慰自己寝并,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布腹备。 她就那樣靜靜地躺著衬潦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪植酥。 梳的紋絲不亂的頭發(fā)上镀岛,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音友驮,去河邊找鬼漂羊。 笑死,一個胖子當(dāng)著我的面吹牛卸留,可吹牛的內(nèi)容都是我干的走越。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼耻瑟,長吁一口氣:“原來是場噩夢啊……” “哼旨指!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喳整,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤谆构,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后框都,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搬素,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年魏保,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔗蹋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡囱淋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出餐塘,到底是詐尸還是另有隱情妥衣,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站税手,受9級特大地震影響蜂筹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芦倒,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一艺挪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兵扬,春花似錦麻裳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至傲霸,卻和暖如春疆瑰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昙啄。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工穆役, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梳凛。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓耿币,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伶跷。 傳聞我的和親對象是個殘疾皇子掰读,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容