利用HBuilder打包Vue開發的webapp為app


眾所周知,前端開發完成的webapp只能運行在瀏覽器上,對運行環境有一定的限制,也就是除了瀏覽器其他的環境下不支持;那么現在如果有個需求是這樣的呢?需要一套代碼三端運行呢?三端運行(黑人臉??)是的,三端運行即web端,安卓端和IOS端 ;先別急着說實現不了和不可能,利用HBulder來試試;

 

HBuilder是DCloud(數字天堂)推出的一款支持HTML5的Web開發IDE。  HBuilder的編寫用到了Java、C、Web和Ruby。HBuilder本身主體是由Java編寫。它基於Eclipse,所以順其自然地兼容了Eclipse的插件。 HBuilder其實只是一款編輯器,擁有較為豐富的語法庫,對Vue的支持比較友好,工具輕量且功能強大;

官網地址:https://www.dcloud.io/

首先我們做一下准備工作:

下載HBuilder並安裝完成
將開發完的webapp利用webpack打包完成
下載360手機助手,打包完成后方便安裝到手機上運行看效果
 

1.首先我們拿到我們的webapp並運行起來,確認沒有異常之后利用webpack打包,webpack打包后將會產生 dist/目錄(命名根據webpack來,內含index.html和static/目錄)

2.打開HBuilder,然后點擊文件--新建--移動App,創建一個空白模板的移動App;

 

 3.創建好了空白的移動App模板之后,我們可以看到我們的文件夾路徑變為這樣(可以刪除css、js、img等文件夾)

 

 
4.將npm run build(打包后)生成的index.html內容全部復制進Hbuilder的index.html里面去,並將產生的static/目錄復制到HBuilder本項目目錄下,此時我們的目錄結構是這樣的:

 

 5.打開index.html里面的對static的引用,將=后面的'/'去掉

 

 

6.點擊一下瀏覽器運行,看是否有異常,如果沒有異常,我們接着往下走;HBuilder支持雲端打包和離線打包,本文暫且只講述雲端打包

7.項目文件夾中右鍵--發行--點擊雲打包-打原生安裝包,根據所需要的版本(安卓和IOS)進行打包

 

 8.提示信息不管,直接點擊確認沒有缺少權限,繼續打包

 

 9.提交到雲端之后,直接點確定,等制作安裝包,這里可能需要等個兩三分鍾,請耐心等待打包完成

 

 

 

10.點擊手動下載就可以下載到我們打包好的apk了

 

 

 

11.這里我們可以使用手機模擬器來安裝apk應用,也可以用360手機助手來安裝,我們來講講360手機助手安裝:管理我的手機--安裝本地應用--選擇需要安裝的apk,然后即可安裝;其實360助手只是一個手段,重點是apk,當然可以通過微信助手發送apk手機安裝;

12.這就是我們打包完之后的app,運行的速度還比較流暢,占用內存大小也還好,打包完之后只用了30+M;功能都正常,只是布局方面跟webapp相比部分略微大一點點,幾乎可以忽略不計(圖片效果是因為是截圖,所以有點擠壓,打包完之后看效果是正常的)

 

 

解決HBuilder中打包app之后點擊物理鍵返回直接退出app的問題(這里特別感謝@雨落秋垣提出的建議和解決方案,親測可用):

/**
 * 解決hbuilder打包app之后點擊手機返回鍵直接退出app的
 */
document.addEventListener('plusready', function() {
    // 獲取當前頁面所屬的Webview窗口對象
    var webview = plus.webview.currentWebview();
    // 注冊返回按鍵事件
    plus.key.addEventListener('backbutton', function() {
        webview.canBack(function(e) {
            // 得到當前url
            var filename = location.href;
            // 截取得到當前的文件名
            filename = filename.substr(filename.lastIndexOf('/') + 1);
            // 文件名比較,只有在首頁和登錄頁的時候
            if(filename == "user_login" || filename == "") {
                // 在首頁或者登錄頁物理鍵返回點擊確認直接觸發關閉
                if(window.confirm('是否退出?')) {
                    // 關閉webview窗口
                    webview.close();
                    return true;
                } else {
                    return false;
                }
                // 不在首頁和登錄頁物理鍵返回
            } else {
                webview.back();
            }
        })
    });
});

在項目中使用:我們只需要在項目中創建一個單獨的js文件,然后引入這個文件到main.js中即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM