将vue项目打包成安卓app

news2025/2/26 3:41: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://www.coloradmin.cn/o/1087683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java进阶 之 再论面向对象(1)——面向对象的编程思想 Java中的类和对象 深入认识对象,内存图解+变量作用域+参数传递

前言 我们都知道Java是一门面向对象object-oriented&#xff08;OOP&#xff09;的编程语言&#xff0c;但究竟什么是面向对象&#xff0c;为什么要用面向对象&#xff0c;往往会语焉不详。 本篇博客从面向过程和面向对象的编程思想谈起&#xff0c;阐述了类和对象在Java中的…

044:mapboxGL利用fill-extrusion自定义挤出状建筑体

第044个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中利用fill-extrusion自定义挤出状建筑体。填充挤压样式图层在地图上渲染一个或多个填充(以及可选的描边)挤压(3D)多边形。 您可以使用填充拉伸图层来配置多边形或多多边形要素的拉伸和视觉外观。 直接复…

JMeter定时器

一. 同步定时器&#xff08;Synchronizing Timer) &#xff08;在Loadrunner中叫做集合点&#xff09; 思考&#xff1a; 如何模拟多个用户同时抢一个红包&#xff1f;如何测试电商网站中抢购活动、秒杀活动&#xff1f; 1.1 介绍 Sync Timer的目的是阻塞线程&#xff0c;直…

【算法-动态规划】完全背包问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

计算机毕业设计选什么题目好?springboot 儿童福利院管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【Java 定时任务】crontab定时任务配置(139)

背景 在日常的开发工作中我们经常会遇到定时任务的相关问题&#xff0c;比如&#xff1a; 信用卡定时每月给用户推送账单数据&#xff1b; 轮训更新某个任务的状态是否完成&#xff1b; 设置一个定时提醒&#xff1b; 邮件或消息设置定时发送&#xff1b; 定时统计某个时间段的…

高压放大器在软体机器人领域的应用

软体机器人是一种新型机器人技术&#xff0c;与传统的硬体机器人有着很大的不同。软体机器人通常由柔软的材料制成&#xff0c;具有高度的柔韧性和灵活性&#xff0c;并且可以实现多种形状和动作。但是&#xff0c;软体机器人的发展面临很多技术挑战&#xff0c;其中之一就是控…

信息与网络安全基础知识汇总

需要面试真题和考证资料的 面试真题考证资料点我领取 面试真题考证资料点我领取 面试真题考证资料点我领取 一、概述 1.网络信息安全基本概念 信息安全&#xff1a;是指信息网络中的硬件、软件及其系统中的数据受到保护&#xff0c;不受偶然的或者恶意的原因而遭到破…

2023年中国潜望式镜头市场发展趋势分析:潜望式镜头渗透将进一步提升[图]

随着摄像技术的渐渐成熟&#xff0c;专业摄影师对镜头的要求越来越高&#xff0c;所以产生了潜望式镜头&#xff0c;“潜望镜式变焦”镜头俗称“内变焦”镜头&#xff0c;由于光学变焦是在机身内部完成&#xff0c;所以可以很容易安装滤镜&#xff0c;无需额外安装镜头筒。其次…

推荐16款最好的3dMax插件

3DMAX本身就是一个非常复杂的3d软件,有许多功能。所有的建模、动画和模拟工具都在其中.然而,也有由外部作者创建的插件或脚本。 这些插件可以显著改善和促进3DMAX的工作的。在许多情况下,它们超出了这个应用程序的基本工具,并引入了原始创造者未提供的功能。下面就给大家介绍…

C语言之文件操作篇(1)

目录 为什么要使用文件 什么是文件 文件名 文件名的访问路径 相对路径 绝对路径 文件类型 文件缓冲区 文件指针 文件的打开与关闭 fopen fclose 打开方式如下 w r 今天我们来介绍C语言的文件操作。之前我们实现的通讯录有两个问题 信息太多&#xff0c;空间小了…

什么是无人直播呢?

无人直播是指通过技术手段实现直播间不停播&#xff0c;从而无需主播真人出镜参与直播。这种直播方式通常需要使用一些特定的软件或工具&#xff0c;例如虚拟背景软件等。 无人直播通常用于一些商业目的&#xff0c;如广告宣传、产品销售等。 通过无人直播&#xff0c;商家可…

2023年中国在线问诊行业发展历程及趋势分析:线上医疗将朝服务多样化、智慧化发展[图]

在线问诊是指通过开设线上义诊等通道进行诊疗的活动&#xff0c;主要作用是可防止线下就诊造成交叉感染。在线问诊平衡医疗资源供给&#xff0c;但问诊顺利开展的前提是可以提供专业的诊断或医疗建议。线上问诊病人很难甄别医生的资质&#xff0c;所以只能作基础性诊断参考。 …

ssm+vue的培训学校教学管理平台(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的培训学校教学管理平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

keepalived+nginx实现高可用

1.安装keepalived、nginx yum install keepalived –y//centos默认无nginx源 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmyum install -y nginx2.修改keepalived配置文件&#xff08;/etc/keepalived/keepalived.c…

代码随想录算法训练营第六十二、六十三天 | 单调栈 part 2 | 503.下一个更大元素II 、42. 接雨水、84.柱状图中最大的矩形

目录 503.下一个更大元素II思路代码 42. 接雨水思路一 双指针思路二 单调栈代码 84.柱状图中最大的矩形思路一 双指针思路二 单调栈代码 503.下一个更大元素II Leetcode 思路 将数组乘2来遍历即可&#xff0c;就是加长版的每日温度。 但是处理起来会有细节&#xff0c;如果…

Annoy vs Milvus:哪个向量数据库更适合您的AI应用?知其然知其所以然

1. Annoy vs Milvus简介 Annoy 和 Milvus 都是用于向量索引和相似度搜索的开源库&#xff0c;它们可以高效地处理大规模的向量数据。 Annoy&#xff08;Approximate Nearest Neighbors Oh Yeah&#xff09;&#xff1a; Annoy 是一种近似最近邻搜索算法&#xff0c;它通过构…

微信小程序服务通知(订阅消息)定时推送消息功能

首先先说项目需求&#xff1a;向预约参观的用户提前一天晚上8点推送消息。小程序端主要用到的API是我是小程序用到的API。以及服务端用到的API&#xff1a;我是服务端用到的API。 1. 开通订阅消息功能 (1)、 首先需要在小程序管理后台开通订阅消息功能。没开通前如下图所示: …

解读提示工程(Prompt Engineering)

提示工程&#xff08;Prompt Engineering&#xff09;&#xff0c;也称为上下文提示&#xff0c;是一种通过不更新模型的权重/参数来引导LLM行为朝着特定结果的方法。这是与AI有效交流所需结果的过程。提示工程可以用于各种任务&#xff0c;从回答问题到算术推理乃至各种应用领…

Python爬虫技术

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…