螺丝肉鸽
螺丝肉鸽
  • 发布:2026-07-16 17:26
  • 更新:2026-07-16 17:40
  • 阅读:84

UTS插件开发中,如何减少打自定义基座的频率?

分类:uni-app

在编写 UTS 插件的时候,修改第三方 SDK 的引入,需要重新打底座。改了下UTS代码,插件就编译比通过了,还原了也不行,大伙儿都是怎么解决这个问题的?
我找到有个 25 年的贴,但是我照着他说的改了下不行。

2026-07-16 17:26 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

在 UTS 插件开发中,修改第三方 SDK 引入后需要重新打自定义基座是符合预期的机制,因为涉及新增依赖、gradle 配置等操作时,标准基座不具备这些能力,必须通过自定义基座才能生效。参考文档:UTS插件自定义基座说明

针对你提到的“修改 UTS 代码后插件编译不通过,还原也不行”的问题,根据社区反馈和官方解答,通常与本地编译环境或工具版本有关,可以尝试以下排查方向:

  1. 检查 Gradle 版本:目前不支持 gradle 9.0 版本,如果本地使用了该版本,可能会导致编译失败。临时解决办法是降级到稍低版本的 gradle。参考:DCloud问答_212486
  2. 检查 Kotlin 版本兼容性:新版 HBuilderX(如 4.87)内置的 Kotlin 编译器是 2.0,而 Kotlin 自身有 1.9 和 2.0 的区分,这两个版本存在差异,可能会影响编译。参考:DCloud问答_217960
  3. 调整 Gradle 配置:可以尝试在项目根目录下创建一个 gradle.properties 文件,添加 org.gradle.daemon=false 来禁用 Gradle 守护进程;同时检查插件中的 config.json,将第三方依赖替换为国内的远程依赖源。参考:DCloud问答_212486
  4. 检查本地运行环境:在 HBuilderX 的工具设置中,确认 Gradle 可执行脚本路径、JDK 路径以及安卓 SDK 路径配置是否正确。

关于如何减少打自定义基座的频率,官方推荐使用 UTS 原生混编 技术:

如果你在开发中涉及原生代码(Kotlin、Swift、ArkTS),可以将这些原生代码直接放在 UTS 插件目录中,与 UTS 代码混合使用。这样在 HBuilderX 的真机运行中,可以直接改动 UTS 或 Kotlin、Swift、ArkTS 代码,整体联编并直接运行,无需打包自定义基座(注意:Java 代码仍需打包自定义基座)。这能有效省去手动集成 AAR 等三方库后频繁打包自定义基座的环节。参考文档:UTS原生混编介绍

内容为 AI 生成,仅供参考
DCloud_heavensoft

DCloud_heavensoft

iOS下,改UTS代码必须得有xcode。否则每次改uts都要打自定义基座。
除此之外,改uts代码不用打基座。
你的报错是什么,可以发出来。

  • 螺丝肉鸽 (作者)

    错误信息我放下面楼了,就是编译的时候找不到包

    2026-07-16 17:56

螺丝肉鸽

螺丝肉鸽 (作者)

错误信息我就放这里了,提示是第三方的依赖找不到。这个错误基座打完第一次运行是没有的

17:38:30.012 uni_module [wes-push-huawei] 三方依赖文件已存在,跳过下载  
17:38:35.580 uts插件[wes-push-huawei]编译失败  
17:38:35.580 ‌error: 找不到名称“aaid”。参考: https://doc.dcloud.net.cn/uni-app-x/uts/compiler-known-issues.html#error18‌  
17:38:35.580 at uni_modules/wes-push-huawei/utssdk/app-android/index.uts:6:26  
17:38:35.580 4  |  import NotificationManager from 'android.app.NotificationManager'  
17:38:35.580 5  |  import Build from 'android.os.Build'  
17:38:35.580 6  |  import HmsInstanceId from 'com.huawei.hms.aaid.HmsInstanceId'  
17:38:35.580    |                            ^  
17:38:35.580 7  |  import OnSuccessListener from 'com.huawei.hmf.tasks.OnSuccessListener'  
17:38:35.580 8  |  import OnFailureListener from 'com.huawei.hmf.tasks.OnFailureListener'⁠  
17:38:35.580 ‌error: 找不到名称“HmsInstanceId”。参考: https://doc.dcloud.net.cn/uni-app-x/uts/compiler-known-issues.html#error18‌  
17:38:35.580 at uni_modules/wes-push-huawei/utssdk/app-android/index.uts:225:23  
17:38:35.580 223|        log('using appId=' + appId)  
17:38:35.580 224|    
17:38:35.580 225|        const instance = HmsInstanceId.getInstance(ctx)  
17:38:35.580    |                         ^  
17:38:35.580 226|        const token: string = instance.getToken(appId, 'HCM')
  • DCloud_UNI_yuhe

    第一次运行完到第二次运行之间改过什么东西吗?

    2026-07-16 20:37

要回复问题请先登录注册