1***@163.com
1***@163.com
  • 发布:2026-05-12 19:17
  • 更新:2026-06-24 16:13
  • 阅读:500

uts插件开发iOS桌面组件无效

分类:uts

uts插件开发iOS桌面小组件按官方给的文档配置好,打自定义基座运行无效,文档:https://doc.dcloud.net.cn/uni-app-x/plugin/uts-plugin.html#iosextension 使用xcode运行原生代码是能在桌面正常加载出组件的。

ios-extension.json文件

{  
    "WidgetTestExtension.appex": { //iOS Extension的文件名称,必填,多个扩展使用多个节点  
        "identifier": "io.dcloud.LYScanUniPlugin.widget", //必填,扩展的Bundle identifier  
        "profile": "ios-widget-dev.mobileprovision", //必填,扩展使用的 Provisioning Profile,相对于ios-extension.json文件所在目录的路径  
        "plists": {},  
        "entitlements": {}  
    }  
}
2026-05-12 19:17 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

配置后需要提交云端打包后才能生效,云端打包后下载ipa检查组件是否正常打包:
将ipa解压后,在Playload/%UniXXXXXX%.app/Plugins下是否存在appex文件。

Ask小助手

Ask小助手

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

根据你的描述和提供的 ios-extension.json 配置,问题很可能出在 Bundle Identifier 的命名规则描述文件(Provisioning Profile)的匹配上。你提到直接用 Xcode 原生运行是正常的,这通常说明 Extension 本身的代码和配置没有问题,但在 uni-app x 的云端打包环境中,有几个关键的坑需要特别注意。

以下是针对你问题的排查思路和解决方案:

1. 检查 Bundle Identifier 的命名规则

这是最容易出错的地方。根据文档要求,iOS Extension 的 identifier 必须嵌套在主应用的 Bundle ID 之下

例如,如果你的主应用(uni-app x 项目)的 Bundle ID 是 com.example.myapp,那么你的 Extension 的 Bundle ID 必须是 com.example.myapp.xxx 这种格式。

你提供的配置是:

"identifier": "io.dcloud.LYScanUniPlugin.widget"

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码
你需要确认你的主应用 Bundle ID 是不是 io.dcloud.LYScanUniPlugin。如果不是,或者这个层级关系不成立,云端打包时签名就会失败,导致 Extension 无法生效。

解决方案:
identifier 的值改为符合嵌套规则的格式。假设你的主应用 Bundle ID 是 com.yourcompany.yourapp,那么 Extension 的 Bundle ID 应该配置为:

"identifier": "com.yourcompany.yourapp.widget"

本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

2. 确认描述文件(.mobileprovision)的正确性

你配置的描述文件是 ios-widget-dev.mobileprovision。需要注意的是:

  • 开发环境 vs. 发布环境:如果你打的是自定义基座,那么通常需要使用开发(Development)类型的描述文件。请确认 ios-widget-dev.mobileprovision 是否是一个包含了你的 Extension Bundle ID 的有效开发描述文件。
  • 设备注册:自定义基座需要将测试设备的 UDID 注册到这个开发描述文件里,否则安装后也无法运行。
  • 路径问题:确认 ios-widget-dev.mobileprovision 文件确实放在了 nativeResources/ios/ 目录下,与 ios-extension.json 同级。

3. 验证 .appex 文件

你提到用 Xcode 运行原生代码是正常的。请按以下步骤重新提取 .appex 文件,确保它的完整性:

  1. 用 Xcode 打开你的原生工程,选择 Any iOS Device 作为目标。
  2. 通过菜单 Product -> Archive 进行归档。
  3. 在 Organizer 窗口中,选中刚生成的 Archive,点击 Distribute App,然后选择 DevelopmentAd Hoc 导出(具体取决于你的描述文件类型)。
  4. 导出后会得到一个 .ipa 文件。将 .ipa 后缀改为 .zip 并解压。
  5. 进入 Payload/YourApp.app/PlugIns/ 目录,这里的 .appex 文件才是你需要放到 uts 插件 app-ios/Plugins/ 目录下的正确文件。

4. 最终配置检查清单

请再次核对你的项目结构和配置:

  • uts 插件目录app-ios/Plugins/WidgetTestExtension.appex(文件已放置正确)。
  • uni-app x 项目目录
    nativeResources/  
    └── ios/  
        ├── ios-extension.json  
        └── ios-widget-dev.mobileprovision  

    本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

  • ios-extension.json 内容(修正后的示例):
    {  
      "WidgetTestExtension.appex": {  
        "identifier": "com.yourcompany.yourapp.widget", // 修改为嵌套于主应用Bundle ID下的ID  
        "profile": "ios-widget-dev.mobileprovision",  
        "plists": {},  
        "entitlements": {}  
      }  
    }  

    本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码

完成以上修改后,务必删除手机上的旧 App,重新提交云端打包制作自定义基座,再次运行测试。

如果问题依旧,建议检查 HBuilderX 的控制台日志,看是否有关于 Extension 签名或嵌入失败的具体报错。

内容为 AI 生成,仅供参考

要回复问题请先登录注册