HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

鸿蒙 UTS 插件使用三方依赖、本地依赖

uts插件 鸿蒙征文

鸿蒙 UTS 插件使用三方依赖

在鸿蒙开发中市场需要使用三方依赖,可能是三方包,可能是一个本地 har 包,这里介绍如何接入。

接入三方依赖

这里举例 https://ohpm.openharmony.cn/ 最受欢迎的三方库 @pura/harmony-utils 。这个库,提供了众多方法,可以加速功能开发。

更新:为了辅助说明,这里提供了 uts 源码,可对比参考 https://ext.dcloud.net.cn/plugin?id=24849

harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。

从原生鸿蒙角度开发,使用这个工具库,需要两个步骤

  • 安装依赖
  • 调用方法

在 UTS 中使用这个工具库,需要三个步骤

  • 创建 UTS 插件
  • 引用依赖
  • 调用方法

下面介绍具体步骤

假设我们希望通过 harmony-utils 获取当前的工具包名。调用的是 AppUtil.getBundleName

1. 创建 UTS 插件

在 HBuilderX 中操作。首先创建 uni_modules 功能,如果当前目录中没有对应文件夹,可在项目文件夹节点单击右键选择 新建 uni_modules 目录

这会创建 uni_moduels 文件夹,在这个文件夹上单击右键。

在新窗口中选择 UTS 插件-API 插件,点击创建。

假定插件的 ID 是 invoke-utils,找到这个文件夹,观察是否存在对应的文件,如果没有就创建 uni_modules/invoke-utils/utssdk/app-harmony/index.uts

这样插件就创建好了。这部分可参考 UTS 插件介绍原生混编 做进一步了解。

2. 安装依赖

创建 uni_modules/invoke-utils/utssdk/app-harmony/config.json,添加依赖。可参考文档 配置uts插件依赖

鸿蒙的库管理工具是ohpm。类似于js的npm,Android的仓储。鸿蒙的三方sdk封装文件为.har,类似于Android的.aar
uts插件的utssdk/app-harmony/config.json文件内可以配置依赖使用鸿蒙的三方库

代码填写下面方案:

{  
   "dependencies": {  
     "@pura/harmony-utils":"1.3.6"  
   }  
}

接下来准备使用依赖功能。

3. 调用方法

在 index.uts 中添加下面逻辑

import { AppUtil } from '@pura/harmony-utils'  

UTSHarmony.onAppAbilityCreate(() => {  
  const abilityCtx = UTSHarmony.getUIAbilityContext();  
  const ctx = abilityCtx  
  AppUtil.init(ctx);  
})  

export const getAppId = () => {  
  let bundleName = AppUtil.getBundleName();  
  return bundleName  
}

在原始文档中要求在 AbilityCreate 中初始化,这里可以使用 UTSHarmony.onAppAbilityCreate 来实现初始化。

和 TS 代码类似,调用了提供的方法,返回了具体数据。

在实际的 Vue 逻辑中,比如 button 通过 click 调用下面逻辑即可

<script setup>  
  import { getAppId } from '@/uni_modules/invoke-utils'  
  function openTest() {  
    const res = getAppId()  
    console.log('获取应用ID:', res)  
  }  
</script>

调用此方法,观察控制台,可以看到包名。这说明工具调用成功。

接入 har 依赖

接入 har 依赖。如何制作 har 依赖,在下面单独说明。

假定已经得到了一个 localLib.har 文件。放置 har 文件在 uts 插件内,比如在 index.uts 的同级目录, libs/localLib.har 路径。

修改 config.json,配置相对路径。

{  
  "dependencies": {  
    "locallib": "./libs/localLib.har"  
  }  
}

在 index.uts 中引用和导出。

注意:这里提到的 locaLib 名称不是随便起的,类似于 npm 的 packages.json 依赖, "vue":"3.4" ,这里的 vue 要和实际安装的包名要一致。

包名和导出的内容如何知晓?把 har 包改成 zip 并解压,得到产物。有两个文件需要注意

  • oh-package.json 里面的 name 是包的名字,可以复制出来,不要随意写成 localib 以实际为准
  • 包导出的内容可以在 index.d.ts 中查看,看具体 export 的内容是什么,不要随意写成 add 以实际为准
import { add } from 'locallib'  

export const addFun = (a:number, b:number):number => {  
  return add(a, b)  
}

在页面中引入这个 uts 插件并使用即可。

<script setup>  
  import { addFun} from '@/uni_modules/otto-thirdhar'  
  function openTest() {  
    console.log(addFun(3,4))  
  }  
</script>

执行这个方法,顺利的话可以看到控制台打印数字 7.

注意事项:

  • 引入 har 可能有版本兼容性要求,可在 harmony-configs/build-profile.json5 内修改 compatibleSdkVersion
  • har 可能构建内容有误,实际运行不正常,可在原生工程项目中自测,排除 har 文件内部问题

如何构建 har 模块

在 DevEco 中打开一个项目,选择 文件 - 新建 - 模块 - Static Library,定义模块名选择创建。

在创建的文件中选择 index.ets 找到模块入口,可导出组件、方法。

在 DevEco 中选择 构建(在重构和运行中间) - 构建模块(第一个选项),等待编译结束,观察模块目录中的 build/default/outputs/default 找到 har 文件。

har 文件本身是一个压缩文件,可自行拆包了解结构,内部存在方法 d.ets 等文件。

继续阅读 »

鸿蒙 UTS 插件使用三方依赖

在鸿蒙开发中市场需要使用三方依赖,可能是三方包,可能是一个本地 har 包,这里介绍如何接入。

接入三方依赖

这里举例 https://ohpm.openharmony.cn/ 最受欢迎的三方库 @pura/harmony-utils 。这个库,提供了众多方法,可以加速功能开发。

更新:为了辅助说明,这里提供了 uts 源码,可对比参考 https://ext.dcloud.net.cn/plugin?id=24849

harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。

从原生鸿蒙角度开发,使用这个工具库,需要两个步骤

  • 安装依赖
  • 调用方法

在 UTS 中使用这个工具库,需要三个步骤

  • 创建 UTS 插件
  • 引用依赖
  • 调用方法

下面介绍具体步骤

假设我们希望通过 harmony-utils 获取当前的工具包名。调用的是 AppUtil.getBundleName

1. 创建 UTS 插件

在 HBuilderX 中操作。首先创建 uni_modules 功能,如果当前目录中没有对应文件夹,可在项目文件夹节点单击右键选择 新建 uni_modules 目录

这会创建 uni_moduels 文件夹,在这个文件夹上单击右键。

在新窗口中选择 UTS 插件-API 插件,点击创建。

假定插件的 ID 是 invoke-utils,找到这个文件夹,观察是否存在对应的文件,如果没有就创建 uni_modules/invoke-utils/utssdk/app-harmony/index.uts

这样插件就创建好了。这部分可参考 UTS 插件介绍原生混编 做进一步了解。

2. 安装依赖

创建 uni_modules/invoke-utils/utssdk/app-harmony/config.json,添加依赖。可参考文档 配置uts插件依赖

鸿蒙的库管理工具是ohpm。类似于js的npm,Android的仓储。鸿蒙的三方sdk封装文件为.har,类似于Android的.aar
uts插件的utssdk/app-harmony/config.json文件内可以配置依赖使用鸿蒙的三方库

代码填写下面方案:

{  
   "dependencies": {  
     "@pura/harmony-utils":"1.3.6"  
   }  
}

接下来准备使用依赖功能。

3. 调用方法

在 index.uts 中添加下面逻辑

import { AppUtil } from '@pura/harmony-utils'  

UTSHarmony.onAppAbilityCreate(() => {  
  const abilityCtx = UTSHarmony.getUIAbilityContext();  
  const ctx = abilityCtx  
  AppUtil.init(ctx);  
})  

export const getAppId = () => {  
  let bundleName = AppUtil.getBundleName();  
  return bundleName  
}

在原始文档中要求在 AbilityCreate 中初始化,这里可以使用 UTSHarmony.onAppAbilityCreate 来实现初始化。

和 TS 代码类似,调用了提供的方法,返回了具体数据。

在实际的 Vue 逻辑中,比如 button 通过 click 调用下面逻辑即可

<script setup>  
  import { getAppId } from '@/uni_modules/invoke-utils'  
  function openTest() {  
    const res = getAppId()  
    console.log('获取应用ID:', res)  
  }  
</script>

调用此方法,观察控制台,可以看到包名。这说明工具调用成功。

接入 har 依赖

接入 har 依赖。如何制作 har 依赖,在下面单独说明。

假定已经得到了一个 localLib.har 文件。放置 har 文件在 uts 插件内,比如在 index.uts 的同级目录, libs/localLib.har 路径。

修改 config.json,配置相对路径。

{  
  "dependencies": {  
    "locallib": "./libs/localLib.har"  
  }  
}

在 index.uts 中引用和导出。

注意:这里提到的 locaLib 名称不是随便起的,类似于 npm 的 packages.json 依赖, "vue":"3.4" ,这里的 vue 要和实际安装的包名要一致。

包名和导出的内容如何知晓?把 har 包改成 zip 并解压,得到产物。有两个文件需要注意

  • oh-package.json 里面的 name 是包的名字,可以复制出来,不要随意写成 localib 以实际为准
  • 包导出的内容可以在 index.d.ts 中查看,看具体 export 的内容是什么,不要随意写成 add 以实际为准
import { add } from 'locallib'  

export const addFun = (a:number, b:number):number => {  
  return add(a, b)  
}

在页面中引入这个 uts 插件并使用即可。

<script setup>  
  import { addFun} from '@/uni_modules/otto-thirdhar'  
  function openTest() {  
    console.log(addFun(3,4))  
  }  
</script>

执行这个方法,顺利的话可以看到控制台打印数字 7.

注意事项:

  • 引入 har 可能有版本兼容性要求,可在 harmony-configs/build-profile.json5 内修改 compatibleSdkVersion
  • har 可能构建内容有误,实际运行不正常,可在原生工程项目中自测,排除 har 文件内部问题

如何构建 har 模块

在 DevEco 中打开一个项目,选择 文件 - 新建 - 模块 - Static Library,定义模块名选择创建。

在创建的文件中选择 index.ets 找到模块入口,可导出组件、方法。

在 DevEco 中选择 构建(在重构和运行中间) - 构建模块(第一个选项),等待编译结束,观察模块目录中的 build/default/outputs/default 找到 har 文件。

har 文件本身是一个压缩文件,可自行拆包了解结构,内部存在方法 d.ets 等文件。

收起阅读 »

微信小程序主包体积又超了?试试这个插件

体积 体积优化 微信小程序

你是否在使用UniApp开发微信小程序时,遇到微信小程序主包超出2M,导致无法上传的问题?

题主自己所在团队曾被这个问题反复困扰,针对这个问题,我们尝试过不同的办法,例如:

  1. 对图片下手腾大小:在编译阶段,对所有图片资源路径都替换成远端图片地址,主包内基本不存在图片资源。
  2. 对项目进行了重构:1️⃣ 删除已下线业务代码;2️⃣ 合理拆分子包,将非首屏页面,或者业务层级较深的页面根据流程类别拆成独立子包;3️⃣ 主包只包含首页;
  3. 尽量使用支持模块化的第三方库,规范import方式,以确保使用时只引用真实使用到的模块,例如lodash-es替换lodash,引入时 import {find} from 'lodash-es',而不是import * as _ from 'loadash-es'

以上办法都有不错的效果,但随着业务功能的迭代,主包还是超了。 T_T

于是我们对主包体积进行分析,发现对主包影响最大的是公共组件,也即是components目录底下的组件,他们被多个子包共用,因此它们被放在主包,原理上是没有问题的(众所周知子包能应用主包的东西,但不能应用其他子包的东西)。

但是项目临上线才突然出现超包问题,时间紧急,我们好几次都是通过在UniApp项目里,将一些公共组件,从主包目录挪到子包目录里,并修正组件的引用,进而使得编译出来的小程序项目的主包目录中的组件减少,从而体积变小。

这种临时做法收效很快,但缺点也很明显:一方面,对于单次组件迁移操作,相对独立的组件比较好迁移,测试回归范围也不大,但不少组件之间存在相互依赖的关系,迁移的成本和风险会大大增加;另一方面,组件被迁移至多个子包后便有了多份副本,增加了长期维护成本和风险。另外,此举治标不治本,不知道后面还要踩多少次坑。

那么,有没有两全之法?答案当然是有的!

如果我们公共组件迁移的操作,不是基于UniApp项目工程本身,而是对编译出来微信小程序工程动刀子,问题就迎刃而解了。
为了实现这个目的,我们写了一个十分易用的vite插件,只需要引入插件,正常build一下,组件的迁移就自动完成了。

如果你也遇到了类似的问题,可以直接把插件down下来放到自己的项目里使用。

传送门:https://github.com/ohyeahhh/wechatMiniProgramPackageOptimizer

注:这个插件是基于我们团队的项目情况写的,具备一定的通用性,也存在一些限制(具体说明见上述链接readme),不完善之处欢迎大家一起指正、讨论、改善。笔芯。

^_^ 一起加油共同进步。

继续阅读 »

你是否在使用UniApp开发微信小程序时,遇到微信小程序主包超出2M,导致无法上传的问题?

题主自己所在团队曾被这个问题反复困扰,针对这个问题,我们尝试过不同的办法,例如:

  1. 对图片下手腾大小:在编译阶段,对所有图片资源路径都替换成远端图片地址,主包内基本不存在图片资源。
  2. 对项目进行了重构:1️⃣ 删除已下线业务代码;2️⃣ 合理拆分子包,将非首屏页面,或者业务层级较深的页面根据流程类别拆成独立子包;3️⃣ 主包只包含首页;
  3. 尽量使用支持模块化的第三方库,规范import方式,以确保使用时只引用真实使用到的模块,例如lodash-es替换lodash,引入时 import {find} from 'lodash-es',而不是import * as _ from 'loadash-es'

以上办法都有不错的效果,但随着业务功能的迭代,主包还是超了。 T_T

于是我们对主包体积进行分析,发现对主包影响最大的是公共组件,也即是components目录底下的组件,他们被多个子包共用,因此它们被放在主包,原理上是没有问题的(众所周知子包能应用主包的东西,但不能应用其他子包的东西)。

但是项目临上线才突然出现超包问题,时间紧急,我们好几次都是通过在UniApp项目里,将一些公共组件,从主包目录挪到子包目录里,并修正组件的引用,进而使得编译出来的小程序项目的主包目录中的组件减少,从而体积变小。

这种临时做法收效很快,但缺点也很明显:一方面,对于单次组件迁移操作,相对独立的组件比较好迁移,测试回归范围也不大,但不少组件之间存在相互依赖的关系,迁移的成本和风险会大大增加;另一方面,组件被迁移至多个子包后便有了多份副本,增加了长期维护成本和风险。另外,此举治标不治本,不知道后面还要踩多少次坑。

那么,有没有两全之法?答案当然是有的!

如果我们公共组件迁移的操作,不是基于UniApp项目工程本身,而是对编译出来微信小程序工程动刀子,问题就迎刃而解了。
为了实现这个目的,我们写了一个十分易用的vite插件,只需要引入插件,正常build一下,组件的迁移就自动完成了。

如果你也遇到了类似的问题,可以直接把插件down下来放到自己的项目里使用。

传送门:https://github.com/ohyeahhh/wechatMiniProgramPackageOptimizer

注:这个插件是基于我们团队的项目情况写的,具备一定的通用性,也存在一些限制(具体说明见上述链接readme),不完善之处欢迎大家一起指正、讨论、改善。笔芯。

^_^ 一起加油共同进步。

收起阅读 »

【鸿蒙征文】星光不负,码向未来!分享你的uni-app鸿蒙开发实践,赢取精美好礼!

鸿蒙征文 公告

各位DCloud的开发者们:

在1024程序员节即将到来之际,DCloud 诚挚邀请您参与本次 “星光不负,码向未来” 鸿蒙主题征文活动。

我们特别希望看到基于 uni-app 和 uni-app x 在鸿蒙生态中的开发实践、经验总结与创新思考。无论是开发鸿蒙App、元服务,还是打造兼容鸿蒙的插件/UI库,你的每一行代码和每一次分享,都将是鸿蒙生态建设中闪耀的星光。

活动主题:星光不负,码向未来

活动时间:

  • 征文招募期: 2025年10月20日 - 11月20日
  • 文章展示期: 从2025年10月24日起,优秀投稿将陆续在专题页展示
  • 文章评审期: 2025年11月21日 - 11月30日
  • 结果公示期: 2025年12月1日之后

征文方向

我们特别关注以下方向与uni-app结合的实践

请选择以下任一方向,分享你的鸿蒙开发故事:

方向一 成长纪实

分享你从零开始,使用 uni-app 开发鸿蒙 App 或鸿蒙元服务 的学习之路。可以是从基础语法到核心概念的入门笔记,也可以是封装第一个兼容鸿蒙的组件、插件的经历,更欢迎你分享在学习、适配、调试过程中的心得、踩坑记录与解决方案。

方向二 案例实战

鸿蒙能力集成:分享你在结合 uni-app 的鸿蒙项目中,集成并应用鸿蒙开放能力(如云开发、云测试、预加载、Applinking、APMS、近场能力、应用分析、HarmonyOS SDK等)解决实际问题的过程、效果与心得。真实经历,尤为珍贵。

项目全流程落地:详细阐述基于 uni-app/uni-app x 的鸿蒙项目从需求制定、技术选型、技术适配(如元服务特性应用)、到最终上架、获取用户反馈的全流程经验。基于uni-app、uni-app x开发的鸿蒙应用已经有上千款,非常欢迎这些开发者分享自己的开发、上架经验。
方向二的文章,我们还设计了特别奖品,见下文。

方向三 参赛心得

如果你近两年参加过HarmonyOS创新赛、极客松等大赛,欢迎分享你的参赛作品案例与技术心得。请侧重讲解如何利用 uni-app 技术栈,结合HarmonyOS的新技术特性(特别是HarmonyOS NEXT)完成作品,并解说其中的创新点与技术难点。

奖项设置

我们为优秀的你准备了丰厚的礼品作为奖励:

一等奖(5名)
如上奖品为二选一,随机发放;

  • 华为手环7-NFC版
  • 华为智能水杯450ml + 露营灯-无级调光-太阳能+Type-C充电 组合

二等奖(15名)
露营灯-无级调光-太阳能+Type-C充电

三等奖(30名)
HUAWEI 无线蓝牙鼠标-双模办公-灰色 (价值99元)

方向二特别奖(10名)
针对【方向二·案例实战】的优质投稿,额外设立10份 华为手环 9 NFC版作为激励!

惊喜提示:积极参与、文章优质的开发者,将有机会获得 DCloud官方推荐 和 HarmonyOS开发者社区联合曝光,让你的技术影响力更进一步!

参与方式

在 DCloud 问答社区 发布新帖,选择【分享经验】,发布博客文章,并给文章添加【鸿蒙征文】的话题,无需单独报名,社区会通过话题自动筛选征文文章。

评审标准

社区将根据以下维度进行综合评选:

  1. 内容质量:内容详实、逻辑清晰、案例完整。
  2. 技术价值:技术深度、创新性、对uni-app与鸿蒙结合点的挖掘。
  3. 影响力与实用性:对其他开发者的借鉴、启发和帮助程度;如文章的阅读数、点赞数都将作为评选参考指标,欢迎大家将自己的文章分享到微博、微信等,扩散自己的文章影响力。
  4. 原创与真实性:必须为原创内容,分享真实开发经验。

行动起来吧!

技术之路,因分享而璀璨;鸿蒙生态,因你而精彩。
这不仅是赢取奖品的机会,更是向整个开发者社区展示你技术风采的舞台。

立即执笔,分享你的 uni-app 鸿蒙开发实践,与我们一起,码向未来!

============

目前已经有不少优秀的征文发布,大家可以移步鸿蒙征文系列阅读欣赏。

继续阅读 »

各位DCloud的开发者们:

在1024程序员节即将到来之际,DCloud 诚挚邀请您参与本次 “星光不负,码向未来” 鸿蒙主题征文活动。

我们特别希望看到基于 uni-app 和 uni-app x 在鸿蒙生态中的开发实践、经验总结与创新思考。无论是开发鸿蒙App、元服务,还是打造兼容鸿蒙的插件/UI库,你的每一行代码和每一次分享,都将是鸿蒙生态建设中闪耀的星光。

活动主题:星光不负,码向未来

活动时间:

  • 征文招募期: 2025年10月20日 - 11月20日
  • 文章展示期: 从2025年10月24日起,优秀投稿将陆续在专题页展示
  • 文章评审期: 2025年11月21日 - 11月30日
  • 结果公示期: 2025年12月1日之后

征文方向

我们特别关注以下方向与uni-app结合的实践

请选择以下任一方向,分享你的鸿蒙开发故事:

方向一 成长纪实

分享你从零开始,使用 uni-app 开发鸿蒙 App 或鸿蒙元服务 的学习之路。可以是从基础语法到核心概念的入门笔记,也可以是封装第一个兼容鸿蒙的组件、插件的经历,更欢迎你分享在学习、适配、调试过程中的心得、踩坑记录与解决方案。

方向二 案例实战

鸿蒙能力集成:分享你在结合 uni-app 的鸿蒙项目中,集成并应用鸿蒙开放能力(如云开发、云测试、预加载、Applinking、APMS、近场能力、应用分析、HarmonyOS SDK等)解决实际问题的过程、效果与心得。真实经历,尤为珍贵。

项目全流程落地:详细阐述基于 uni-app/uni-app x 的鸿蒙项目从需求制定、技术选型、技术适配(如元服务特性应用)、到最终上架、获取用户反馈的全流程经验。基于uni-app、uni-app x开发的鸿蒙应用已经有上千款,非常欢迎这些开发者分享自己的开发、上架经验。
方向二的文章,我们还设计了特别奖品,见下文。

方向三 参赛心得

如果你近两年参加过HarmonyOS创新赛、极客松等大赛,欢迎分享你的参赛作品案例与技术心得。请侧重讲解如何利用 uni-app 技术栈,结合HarmonyOS的新技术特性(特别是HarmonyOS NEXT)完成作品,并解说其中的创新点与技术难点。

奖项设置

我们为优秀的你准备了丰厚的礼品作为奖励:

一等奖(5名)
如上奖品为二选一,随机发放;

  • 华为手环7-NFC版
  • 华为智能水杯450ml + 露营灯-无级调光-太阳能+Type-C充电 组合

二等奖(15名)
露营灯-无级调光-太阳能+Type-C充电

三等奖(30名)
HUAWEI 无线蓝牙鼠标-双模办公-灰色 (价值99元)

方向二特别奖(10名)
针对【方向二·案例实战】的优质投稿,额外设立10份 华为手环 9 NFC版作为激励!

惊喜提示:积极参与、文章优质的开发者,将有机会获得 DCloud官方推荐 和 HarmonyOS开发者社区联合曝光,让你的技术影响力更进一步!

参与方式

在 DCloud 问答社区 发布新帖,选择【分享经验】,发布博客文章,并给文章添加【鸿蒙征文】的话题,无需单独报名,社区会通过话题自动筛选征文文章。

评审标准

社区将根据以下维度进行综合评选:

  1. 内容质量:内容详实、逻辑清晰、案例完整。
  2. 技术价值:技术深度、创新性、对uni-app与鸿蒙结合点的挖掘。
  3. 影响力与实用性:对其他开发者的借鉴、启发和帮助程度;如文章的阅读数、点赞数都将作为评选参考指标,欢迎大家将自己的文章分享到微博、微信等,扩散自己的文章影响力。
  4. 原创与真实性:必须为原创内容,分享真实开发经验。

行动起来吧!

技术之路,因分享而璀璨;鸿蒙生态,因你而精彩。
这不仅是赢取奖品的机会,更是向整个开发者社区展示你技术风采的舞台。

立即执笔,分享你的 uni-app 鸿蒙开发实践,与我们一起,码向未来!

============

目前已经有不少优秀的征文发布,大家可以移步鸿蒙征文系列阅读欣赏。

收起阅读 »

UniApp 项目鸿蒙上线

鸿蒙征文

介绍一下背景:本项目是uni cli搭建的项目,区分是不是uni cli项目看一下项目存不存在src文件夹就行,本文介绍内容都是基于uni cli项目的。
需求:

  1. uniapp项目需要打包鸿蒙上线App,本次调研是基于Mac环境,不涉及Windows。
  2. 第三方SDK插件对接UTS
    准备工作:
  3. 下载安装HBuilderX(最新版)
  4. DevEco Studio下载安装,鸿蒙模拟器安装(或通过真机来进行调试)
  5. Dcloud开发者中心注册账号
  6. 华为开发者联盟 AppGallery Connect 注册账号
  7. 调试证书/发布证书(需要和本项目鸿蒙App管理员要)
    鸿蒙App配置:
    manifest.json-鸿蒙App配置
    包名:uni.app.snsk.ydbz
    证书签名配置包括调试证书和发布证书,调试证书相关配置如下图所示

应用包名:Android端、iOS端、HarmonyOS端可能有自己定义的包名,只要在本端下做好统一即可。在HarmonyOS端我们用的包名是uni.app.snsk.ydbz,项目中的配置要和华为开发者联盟一致。
运行设备:需要启动虚拟机或USB连接鸿蒙手机以后才能检测到。
开发调试可以选择自动申请调试证书,也可以手动配置下边的私钥库文件及证书文件。点自动申请调试证书以后会登录华为开发者联盟,生产证书回填下边的私钥库文件和证书文件等。
不选择自动申请调试证书,也可以和本项目鸿蒙端的管理员要调试证书,然后手动选择文件。
私钥库文件是.p12结尾的文件
证书文件是.cer结尾的文件
签名描述文件是.p7p结尾的文件
管理员账号在申请调试证书的时候,需要选取证书请求文件(CSR),证书请求文件需要在DevEco Studio上申请,具体操作请参考生成证书请求文件。
下载签名描述文件前需要先通过UDID将设备注册到AGC设备列表,后续Profile中指定的调试设备将从此设备列表中选取。具体步骤:华为开发者联盟的“证书、APP ID和Profile”-设备-添加设备。
配置完成以后点击保存。
发布证书相关配置如下图所示

发布证书的配置参考调试证书即可,签名描述文件分调试和正式两个文件,私钥库文件和证书文件和调试是同一个文件。
图标配置
前景图和背景图标准

标准如下:
前景图是核心图形(如Logo)必须是透明底色的PNG
背景图纯色背景(如纯白色)必须是不透明的PNG
图标资源必须为分层资源(一张前景图和一张背景图)
图标资源尺寸必须为 1024*1024px
启动界面配置
启动界面背景色,根据项目需求填写,本项目为空
启动界面中部图标,推荐选择软件logo
模块配置
根据项目勾选,本项目未勾选
运行到鸿蒙
具体操作:运行-运行到手机或模拟器-运行到鸿蒙

勾选设备-点击运行,成功以后会显示如下信息

这个地方,本项目出现了好多编译错误,最终通过升级uniapp-cli解决
运行成功以后生成鸿蒙工程目录,用DevEco Studio打开即可,打开以后到项目结构如图:

  1. 在DevEco Studio中需要检查一下app.json5中的bundleName是不是我们的包名,改为包名即可
  2. 在DevEco Studio里配置调试证书

调试过程可以勾选自动生成证书,打正式包要选择正式的描述文件Profile file(*.p7p),该配置和HbuilderX中的配置大同小异。
OpenHarmony SDK配置

选择设备,可以是USB连接鸿蒙手机,或者在设备管理器中下载虚拟机。

点击右侧运行,鸿蒙app就运行到手机上了。

继续阅读 »

介绍一下背景:本项目是uni cli搭建的项目,区分是不是uni cli项目看一下项目存不存在src文件夹就行,本文介绍内容都是基于uni cli项目的。
需求:

  1. uniapp项目需要打包鸿蒙上线App,本次调研是基于Mac环境,不涉及Windows。
  2. 第三方SDK插件对接UTS
    准备工作:
  3. 下载安装HBuilderX(最新版)
  4. DevEco Studio下载安装,鸿蒙模拟器安装(或通过真机来进行调试)
  5. Dcloud开发者中心注册账号
  6. 华为开发者联盟 AppGallery Connect 注册账号
  7. 调试证书/发布证书(需要和本项目鸿蒙App管理员要)
    鸿蒙App配置:
    manifest.json-鸿蒙App配置
    包名:uni.app.snsk.ydbz
    证书签名配置包括调试证书和发布证书,调试证书相关配置如下图所示

应用包名:Android端、iOS端、HarmonyOS端可能有自己定义的包名,只要在本端下做好统一即可。在HarmonyOS端我们用的包名是uni.app.snsk.ydbz,项目中的配置要和华为开发者联盟一致。
运行设备:需要启动虚拟机或USB连接鸿蒙手机以后才能检测到。
开发调试可以选择自动申请调试证书,也可以手动配置下边的私钥库文件及证书文件。点自动申请调试证书以后会登录华为开发者联盟,生产证书回填下边的私钥库文件和证书文件等。
不选择自动申请调试证书,也可以和本项目鸿蒙端的管理员要调试证书,然后手动选择文件。
私钥库文件是.p12结尾的文件
证书文件是.cer结尾的文件
签名描述文件是.p7p结尾的文件
管理员账号在申请调试证书的时候,需要选取证书请求文件(CSR),证书请求文件需要在DevEco Studio上申请,具体操作请参考生成证书请求文件。
下载签名描述文件前需要先通过UDID将设备注册到AGC设备列表,后续Profile中指定的调试设备将从此设备列表中选取。具体步骤:华为开发者联盟的“证书、APP ID和Profile”-设备-添加设备。
配置完成以后点击保存。
发布证书相关配置如下图所示

发布证书的配置参考调试证书即可,签名描述文件分调试和正式两个文件,私钥库文件和证书文件和调试是同一个文件。
图标配置
前景图和背景图标准

标准如下:
前景图是核心图形(如Logo)必须是透明底色的PNG
背景图纯色背景(如纯白色)必须是不透明的PNG
图标资源必须为分层资源(一张前景图和一张背景图)
图标资源尺寸必须为 1024*1024px
启动界面配置
启动界面背景色,根据项目需求填写,本项目为空
启动界面中部图标,推荐选择软件logo
模块配置
根据项目勾选,本项目未勾选
运行到鸿蒙
具体操作:运行-运行到手机或模拟器-运行到鸿蒙

勾选设备-点击运行,成功以后会显示如下信息

这个地方,本项目出现了好多编译错误,最终通过升级uniapp-cli解决
运行成功以后生成鸿蒙工程目录,用DevEco Studio打开即可,打开以后到项目结构如图:

  1. 在DevEco Studio中需要检查一下app.json5中的bundleName是不是我们的包名,改为包名即可
  2. 在DevEco Studio里配置调试证书

调试过程可以勾选自动生成证书,打正式包要选择正式的描述文件Profile file(*.p7p),该配置和HbuilderX中的配置大同小异。
OpenHarmony SDK配置

选择设备,可以是USB连接鸿蒙手机,或者在设备管理器中下载虚拟机。

点击右侧运行,鸿蒙app就运行到手机上了。

收起阅读 »

4.76 web端报错 can't find module 'vue-router/dist/vue-router.esm-bundler.js' 的解决方案

web uniapp vue3

背景

近期有开发者反馈web端升级到 4.76 之后报错 can't find module 'vue-router/dist/vue-router.esm-bundler.js',这个是因为你可能是安装到了 4.6.0 版本的 vue- router,这个版本移除了 vue-router.esm-bundler.js 文件,此行为导致了开发环境和生产环境不能正常运行。github上有人反馈了这个问题 详见 https://github.com/vuejs/router/issues/2569

解决方案

如果你使用 npm,需要先删除 node_modules,再重新执行 npm install,检查node_modeuls下面的vue-router依赖是否是最新的 4.6.3 版本,这个版本恢复了 vue-router.esm-bundler.js 文件

继续阅读 »

背景

近期有开发者反馈web端升级到 4.76 之后报错 can't find module 'vue-router/dist/vue-router.esm-bundler.js',这个是因为你可能是安装到了 4.6.0 版本的 vue- router,这个版本移除了 vue-router.esm-bundler.js 文件,此行为导致了开发环境和生产环境不能正常运行。github上有人反馈了这个问题 详见 https://github.com/vuejs/router/issues/2569

解决方案

如果你使用 npm,需要先删除 node_modules,再重新执行 npm install,检查node_modeuls下面的vue-router依赖是否是最新的 4.6.3 版本,这个版本恢复了 vue-router.esm-bundler.js 文件

收起阅读 »

基于vue3.5+vite7+electron38.2实战电脑端os管理系统

vue3 vue.js

vue3-electron38-os:最新原创vite7.1+electron38.2+vue3 setup+pinia3+arcoDesign+echarts跨平台仿macOS/windows风格桌面os管理系统模板。自研可拖拽栅格布局结构、自定义JSON配置桌面菜单/Dock菜单。

使用技术

  • 跨平台框架:electron^38.2.0
  • 前端技术框架:vite^7.1.7+vue^3.5.21+vue-router^4.5.1
  • 组件库:@arco-design/web-vue^2.57.0 (字节前端vue3组件库)
  • 状态管理:pinia^3.0.3
  • 拖拽插件:sortablejs^1.15.6
  • 图表组件:echarts^6.0.0
  • markdown编辑器:md-editor-v3^6.0.1
  • 模拟数据:mockjs^1.1.0
  • 打包构建:electron-builder^24.13.3
  • electron+vite插件:vite-plugin-electron^0.29.0

项目结构目录

使用最新版跨平台框架electron38+vite7创建项目模板,vue3 setup语法开发。

electron-vue3-os桌面端os项目已经同步到我的原创作品集。
electron38+vue3+arco-design客户端os系统

热文推荐

electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统
原创uniapp+vue3+deepseek+uv-ui跨端实战仿deepseek/豆包流式ai聊天对话助手。
vue3-webseek网页版AI问答|Vite6+DeepSeek+Arco流式ai聊天打字效果
最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】
Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板
最新研发flutter3.27+bitsdojo_window+getx客户端仿微信聊天Exe应用
最新版Flutter3.32+Dart3.8跨平台仿微信app聊天界面|朋友圈
最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】
uniapp-vue3-os手机oa系统|uni-app+vue3跨三端os后台管理模板
Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板
uniapp+vue3酒店预订|vite5+uniapp预约订房系统模板(h5+小程序+App端)
Tauri2.0+Vite5聊天室|vue3+tauri2+element-plus仿微信|tauri聊天应用
tauri2.0-admin桌面端后台系统|Tauri2+Vite5+ElementPlus管理后台EXE程序

继续阅读 »

vue3-electron38-os:最新原创vite7.1+electron38.2+vue3 setup+pinia3+arcoDesign+echarts跨平台仿macOS/windows风格桌面os管理系统模板。自研可拖拽栅格布局结构、自定义JSON配置桌面菜单/Dock菜单。

使用技术

  • 跨平台框架:electron^38.2.0
  • 前端技术框架:vite^7.1.7+vue^3.5.21+vue-router^4.5.1
  • 组件库:@arco-design/web-vue^2.57.0 (字节前端vue3组件库)
  • 状态管理:pinia^3.0.3
  • 拖拽插件:sortablejs^1.15.6
  • 图表组件:echarts^6.0.0
  • markdown编辑器:md-editor-v3^6.0.1
  • 模拟数据:mockjs^1.1.0
  • 打包构建:electron-builder^24.13.3
  • electron+vite插件:vite-plugin-electron^0.29.0

项目结构目录

使用最新版跨平台框架electron38+vite7创建项目模板,vue3 setup语法开发。

electron-vue3-os桌面端os项目已经同步到我的原创作品集。
electron38+vue3+arco-design客户端os系统

热文推荐

electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统
原创uniapp+vue3+deepseek+uv-ui跨端实战仿deepseek/豆包流式ai聊天对话助手。
vue3-webseek网页版AI问答|Vite6+DeepSeek+Arco流式ai聊天打字效果
最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】
Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板
最新研发flutter3.27+bitsdojo_window+getx客户端仿微信聊天Exe应用
最新版Flutter3.32+Dart3.8跨平台仿微信app聊天界面|朋友圈
最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】
uniapp-vue3-os手机oa系统|uni-app+vue3跨三端os后台管理模板
Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板
uniapp+vue3酒店预订|vite5+uniapp预约订房系统模板(h5+小程序+App端)
Tauri2.0+Vite5聊天室|vue3+tauri2+element-plus仿微信|tauri聊天应用
tauri2.0-admin桌面端后台系统|Tauri2+Vite5+ElementPlus管理后台EXE程序

收起阅读 »

提个建议---插件 、 广告 等 所有的收益不足100不能体现

提个建议---插件 、 广告 等 所有的收益不足100不能体现,有效期时间长了,钱就没有了,这钱也是我们辛辛苦苦 赚的,好伤心。

解决方案一:
新增一个 账户充值功能 然后 凑够 100 能体现。

解决方案二:
到了有效期,提示我们,手动体现 到了 有效期 不足100也能体现

解决方案三:
账户余额不消失,不能体现,但可是用于支付 ,uniapp 等其他产品的支付也行 比如 unicloud 等。。。

等。。。。。

继续阅读 »

提个建议---插件 、 广告 等 所有的收益不足100不能体现,有效期时间长了,钱就没有了,这钱也是我们辛辛苦苦 赚的,好伤心。

解决方案一:
新增一个 账户充值功能 然后 凑够 100 能体现。

解决方案二:
到了有效期,提示我们,手动体现 到了 有效期 不足100也能体现

解决方案三:
账户余额不消失,不能体现,但可是用于支付 ,uniapp 等其他产品的支付也行 比如 unicloud 等。。。

等。。。。。

收起阅读 »

给大家分享一个接单/发单得小程序

uniapp原生插件 启动图片

小程序链接:

小程序://吖唏接单/Tm0Y19RMgyRQOYb

小程序链接:

小程序://吖唏接单/Tm0Y19RMgyRQOYb

三星手机Android 15 不兼容问题解决

使用uniapp开发应用程序,结果部分用户使用三星手机无法正常安装,总结了下原因大概如下两点:

原因一:targetVersion 设置过低无法兼容最新版。

解决方式:查看自己手机系统版本,找到对应API等级。我这里是Android15,对应API等级35。重新打包发布后,下载安装可以正常安装到三星Android15版本手机。

https://uniapp.dcloud.net.cn/tutorial/app-android-targetsdkversion.html

https://uniapp.dcloud.net.cn/tutorial/app-android-targetsdkversion.html

原因二:CPU不兼容。

解决方式:勾选对应CPU,如果不确定,全部勾选,不要漏掉。

继续阅读 »

使用uniapp开发应用程序,结果部分用户使用三星手机无法正常安装,总结了下原因大概如下两点:

原因一:targetVersion 设置过低无法兼容最新版。

解决方式:查看自己手机系统版本,找到对应API等级。我这里是Android15,对应API等级35。重新打包发布后,下载安装可以正常安装到三星Android15版本手机。

https://uniapp.dcloud.net.cn/tutorial/app-android-targetsdkversion.html

https://uniapp.dcloud.net.cn/tutorial/app-android-targetsdkversion.html

原因二:CPU不兼容。

解决方式:勾选对应CPU,如果不确定,全部勾选,不要漏掉。

收起阅读 »

专业苹果证书检测工具 | cert.signstack.cc

证书 Apple证书 iOS证书

介绍内容:

一键检测iOS证书是否有效、是否被封或撤销

全面支持G3协议证书检测机制

支持IPA包内部证书验证功能

检测结果精准可靠,提升证书管理效率

以高亮方式显示证书状态,更直观易懂

显示掉签时间与证书类型,方便追踪与管理

https://cert.signstack.cc/

继续阅读 »

介绍内容:

一键检测iOS证书是否有效、是否被封或撤销

全面支持G3协议证书检测机制

支持IPA包内部证书验证功能

检测结果精准可靠,提升证书管理效率

以高亮方式显示证书状态,更直观易懂

显示掉签时间与证书类型,方便追踪与管理

https://cert.signstack.cc/

收起阅读 »

苹果IPA在线签名工具(支持Win/Mac)

签名 重签名 iOS证书 App云端打包 Apple证书 App打包 App离线打包 移动APP iOS打包

支持功能:
1支持在线IPA签名与重签名操作

2.可编辑应用名称与标识符信息

3.去除IPA时间限制及冗余动态库

4.提供永久免费分发与下载链接服务

5.支持Windows和macOS双平台使用

访问地址:
https://sign.ipasign.cc

继续阅读 »

支持功能:
1支持在线IPA签名与重签名操作

2.可编辑应用名称与标识符信息

3.去除IPA时间限制及冗余动态库

4.提供永久免费分发与下载链接服务

5.支持Windows和macOS双平台使用

访问地址:
https://sign.ipasign.cc

收起阅读 »

一个用于压缩小程序 JSON 文件的 unplugin 插件,支持 webpack 和 vite

体积优化 uni-app uni-app-x 小程序

@uni_toolkit/unplugin-compress-json

一个用于压缩 JSON 文件的 unplugin 插件,可用于减小小程序端产物体积,支持 Vite、Webpack 主流构建工具。

功能特性

  • 🗜️ 自动压缩 - 自动移除 JSON 文件中的空白字符和换行符
  • 🔧 多构建工具支持 - 支持 Vite、Webpack、Rollup 等构建工具
  • 零配置 - 开箱即用,无需额外配置
  • 🎯 精确匹配 - 只处理 .json 文件,不影响其他资源

安装

# npm  
npm install @uni_toolkit/unplugin-compress-json -D  

# yarn  
yarn add @uni_toolkit/unplugin-compress-json -D  

# pnpm  
pnpm add @uni_toolkit/unplugin-compress-json -D

使用方法

Vite

// vite.config.js  
import { defineConfig } from 'vite'  
import CompressJson from '@uni_toolkit/unplugin-compress-json/vite'  
import uni from '@dcloudio/vite-plugin-uni'  

export default defineConfig({  
  plugins: [  
    uni(),  
    CompressJson(),  
  ],  
})

Vue CLI

// vue.config.js  
const CompressJson = require('@uni_toolkit/unplugin-compress-json/webpack')  

module.exports = {  
  configureWebpack: {  
    plugins: [  
      CompressJson(),  
    ],  
  },  
}

工作原理

插件会在构建过程中自动检测所有 .json 文件,并移除其中的:

  • 空格
  • 制表符
  • 换行符
  • 其他空白字符

压缩前:

{  
  "name": "example",  
  "version": "1.0.0",  
  "description": "这是一个示例"  
}

压缩后:

{"name":"example","version":"1.0.0","description":"这是一个示例"}

注意事项

  • 插件只处理构建输出中的 .json 文件
  • 不会修改源代码文件
  • 适用于生产环境构建,可以减小打包体积
继续阅读 »

@uni_toolkit/unplugin-compress-json

一个用于压缩 JSON 文件的 unplugin 插件,可用于减小小程序端产物体积,支持 Vite、Webpack 主流构建工具。

功能特性

  • 🗜️ 自动压缩 - 自动移除 JSON 文件中的空白字符和换行符
  • 🔧 多构建工具支持 - 支持 Vite、Webpack、Rollup 等构建工具
  • 零配置 - 开箱即用,无需额外配置
  • 🎯 精确匹配 - 只处理 .json 文件,不影响其他资源

安装

# npm  
npm install @uni_toolkit/unplugin-compress-json -D  

# yarn  
yarn add @uni_toolkit/unplugin-compress-json -D  

# pnpm  
pnpm add @uni_toolkit/unplugin-compress-json -D

使用方法

Vite

// vite.config.js  
import { defineConfig } from 'vite'  
import CompressJson from '@uni_toolkit/unplugin-compress-json/vite'  
import uni from '@dcloudio/vite-plugin-uni'  

export default defineConfig({  
  plugins: [  
    uni(),  
    CompressJson(),  
  ],  
})

Vue CLI

// vue.config.js  
const CompressJson = require('@uni_toolkit/unplugin-compress-json/webpack')  

module.exports = {  
  configureWebpack: {  
    plugins: [  
      CompressJson(),  
    ],  
  },  
}

工作原理

插件会在构建过程中自动检测所有 .json 文件,并移除其中的:

  • 空格
  • 制表符
  • 换行符
  • 其他空白字符

压缩前:

{  
  "name": "example",  
  "version": "1.0.0",  
  "description": "这是一个示例"  
}

压缩后:

{"name":"example","version":"1.0.0","description":"这是一个示例"}

注意事项

  • 插件只处理构建输出中的 .json 文件
  • 不会修改源代码文件
  • 适用于生产环境构建,可以减小打包体积
收起阅读 »