将 vue2+ElementU 项目打包成安卓app

news/2024/7/7 22:45:28

目标:将vue项目打包成安卓app
工具:HbuilderX

1.在HbuilderX中创建一个 5+App 项目

在这里插入图片描述

创建好的app项目目录

在这里插入图片描述

2.将vue项目打包

2.1 在 vue.config.js 中添加公共路径(解决打包后的app图片不显示问题)

module.exports = defineConfig({
  // 项目打包成app时需要添加公共路径
  publicPath: './'
})

2.2 将所有后端接口都设置为绝对地址,不能使用代理。(解决打包后app调用后端接口跨域问题)

2.3 路由模式改为 hash

const createRouter = () => new Router({
    mode: 'hash',
    routes: constantRoutes
})

2.3 如果vue项目中有文件上传、下载功能,打包成安卓app后功能失效。

2.3.1 下载文件问题截图

在这里插入图片描述

2.3.2 下载文件解决方法
2.3.2.1 使用H5 Plus(官网)下载文件

安装依赖

npm install vue-awesome-mui

main.js 文件添加代码

import Mui from "vue-awesome-mui"

Vue.config.productionTip = false
Vue.use(Mui);

下载文件方法中判断,如果为 安卓app项目,则使用 plus.downloader.createDownload()来下载文件

// 是否为安卓app
    isInAndroid(){
        var u = navigator.userAgent
        return u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
    },
    // 下载文件(name为文件名;接收后端返回的文件流)
    downloadFile(name){
      if(this.isInAndroid()){
        // 安卓app
        let picurl = '后端接口绝对地址'
        let datas = {
          filename: '_downloads/'+name,
          method: 'GET'
        } 
        let dtask = plus.downloader.createDownload(
          picurl,
          datas,
          (d,status)=>{
            var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename)
            this.$message("文件下载成功,保存路径为: " + fileSaveUrl)
            plus.runtime.openFile(d.filename)
          }
        )
        dtask.setRequestHeader( "Content-Type", "application/json" );
        // 请求头添加token校验
        dtask.setRequestHeader( "Token", localStorage.getItem('token') );
        dtask.start()
      }else{
        // 网页
        downloadFile({ fileName: name }).then(result => {
          let blob = new Blob([result.data],{type: 'charset=utf-8'});
          let fileName = name
          const link=document.createElement('a');
          const url = window.URL.createObjectURL(blob)
          link.href = url;
          link.download = fileName
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link);
          window.URL.revokeObjectURL(url);//销毁url对象
        })
      }
    },
2.3.3 上传文件(网页版使用的是 el-upload 自动上传)

解决: 使用 el-upload 自定义上传 http-request,如下在 handleUpload() 中调用后端接口,实现上传文件功能。

<el-upload
                      class="upload-demo"
                      multiple
                      action="#"
                      :file-list="fileList"
                      :show-file-list="false"
                      :http-request="(file) => {handleUpload(file,scope.row.grinderAutomaticModeParametersID)}"
                      >
                      <el-button type="primary">上传文件</el-button>
                    </el-upload>

2.4 打包vue项目

npm run build

打包好的项目在 dist 文件夹下

在这里插入图片描述

2.5 把dist文件夹下的所有文件替换到创建好的app项目中

2.6 在HbuildX中打开app项目,在manifest.json中点击每一项配置app信息

在这里插入图片描述

2.7 点击 发行 -> 原生App-云打包

在这里插入图片描述
打包后的文件在 unpackage/release/apk 中 .apk文件即为打包好的APP文件


http://lihuaxi.xjx100.cn/news/1625142.html

相关文章

在自己的摄像头上测试ORB_SLAM3

文章目录 硬件相机标定IMU标定依赖编译可能遇到的问题 硬件 x86电脑realsense d435i相机 相机标定 IMU标定 依赖 Ceres # CMake sudo apt-get install cmake # google-glog gflags sudo apt-get install libgoogle-glog-dev libgflags-dev # BLAS & LAPACK sudo apt…

nginx的正向代理,反向代理和负载均衡

nginx当中有两种代理方式以及含义&#xff1a; 1.七层代理 &#xff08;http协议&#xff09; 核心&#xff1a;代理的是http的请求和响应 客户端请求代理服务器&#xff1a;由代理服务器转发客户端的httpd请求&#xff0c;转发到内部的服务器&#xff08;可以是单台和可以是一…

助力森林火情预警检测,基于YOLOv7-tiny、YOLOv7和YOLOv7x开发构建无人机航拍场景下的森林火情检测是别预警系统

火情的预警与检测识别对于保障林业安全&#xff0c;减少人员伤亡有着重要的意义&#xff0c;科学有效地早发现早扑灭是最有效的干预手段&#xff0c;本文的主要是想就是想要建立基于无人机航拍场景下的森林火情检测预警系统&#xff0c;整体效果如下所示&#xff1a; 这里文中选…

港联证券:从AI到华为产业链 主流基金为何屡屡错过新科技

干流基金“踏空”科技股 本年以来&#xff0c;较少有干流基金司理拥抱从AI到华为工业链的科技股&#xff0c;除非基金产品合同“强制”买进。 Wind数据显示&#xff0c;截至目前&#xff0c;本年以来基金产品收益率最高的已超50%&#xff0c;年内收益超15%的基金产品也有数十…

dubbo-admin 2.5.3源码编译

dubbo-admin 2.5.3 属于10年前的产品&#xff0c;当时官方阿里采用1.7版本的jdk进行项目编译&#xff0c;目前在项目中至少使用1.8版本的jdk&#xff0c;导致dubbo-admin 2.5.3在项目中需单独配置一套1.7版本的jdk。对着信创产业的推荐&#xff0c;在arm机器上无法查询到1.7版本…

samba服务器的功能是什么

Samba服务器是一个开源的网络文件共享服务&#xff0c;其主要功能是在不同操作系统之间实现文件和打印机共享。它最常用于将Linux/Unix系统与Windows系统互联&#xff0c;但也支持其他操作系统。 以下是Samba服务器的主要功能&#xff1a; 文件共享&#xff1a;Samba允许用户在…

MongoDB索引操作

1、创建索引 语句&#xff1a; db.collection.createIndex(keys, options, commitQuorum) 选项参数名类型描述keys 包含排序字段和排序方式的对象&#xff0c; 值&#xff1a; 1为升序索引 -1为降序索引 options参数控制对象backgroundboolean 可选&#xff0…

vue加载网络图片

在Vue.js中加载网络图片通常是通过<img>元素来完成的。你可以使用Vue的数据绑定来将图片的URL动态地绑定到<img>元素的src属性上。以下是一个简单的示例&#xff1a; 首先&#xff0c;在你的Vue组件中&#xff0c;需要有一个数据属性来存储图片的URL。例如&#xf…