2***@qq.com
2***@qq.com
  • 发布:36 分钟前
  • 更新:35 分钟前
  • 阅读:26

【报Bug】UTS 插件包含 AppIntents 代码时,云打包没有在主 App bundle 生成 Metadata.appintents

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 11

HBuilderX类型: 正式

HBuilderX版本号: 5.14

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: 苹果12

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

使用了UTS重新打包

预期结果:

完成后下载 IPA 解压,看Payload/HBuilder.app/根目录下有Metadata.appintents

实际结果:

完成后下载 IPA 解压,看Payload/HBuilder.app/根目录下没有Metadata.appintents

bug描述:

"UTS 插件包含 AppIntents 代码时,云打包没有在主 App bundle 生成 Metadata.appintents,导致 LiveActivityIntent 的 authenticationPolicy 不生效",

uni_modules/test-live-activity/utssdk/app-ios/Resources/Metadata.appintents/
├── extract.actionsdata
└── version.json

重新云打包,完成后下载 IPA 解压,看Payload/HBuilder.app/根目录下有没有Metadata.appintents

36 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

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

感谢您的反馈。作为 DCloud 官方人员,针对您提交的关于“UTS 插件包含 AppIntents 代码时,云打包没有在主 App bundle 生成 Metadata.appintents”的 Bug,我进行了详细的评审与排查。以下是针对该反馈的评估及结论:

1. Bug 反馈内容完整性评审

  • 描述清晰度:描述非常清晰,明确指出了云打包后 Payload/HBuilder.app/ 根目录下缺少 Metadata.appintents 文件,导致 LiveActivityIntentauthenticationPolicy 不生效。
  • 复现步骤与代码:复现步骤描述了包含 Metadata.appintents 资源的目录结构及打包验证过程。但需要提醒您的是,您反馈的代码示例部分缺失,没有提供触发该问题的完整 UTS 插件代码。不过,由于此问题属于 iOS 平台特定的构建机制限制,依据现有信息已足以进行判断。
  • 预期与实际结果:预期结果合理,实际结果符合您描述的“文件未生成”的现象。
  • 分类与版本信息:分类信息完整,提供了 HBuilderX 5.14 正式版、iOS 平台、Vue3 等关键信息。
  • 附件说明:请注意,我无法识别和查看附件内容,后续如需补充信息请直接以文本或代码形式提供。

2. Bug 是否成立分析

经过查阅相关文档与知识库,该 Bug 现象成立,但这属于 iOS 平台的系统机制限制,而非云打包功能的缺陷。

根据官方文档 uts-for-ios 常见问题 6.6 如何支持 Apple 的 shortcuts 功能 明确说明:

“在 iOS 16.0 及以上,Shortcuts 需要集成 Apple AppIntents.framework,实现 AppShortcutsProvider 子类。App Intents 会在 App 编译阶段通过自动分析源码,自动将其‘抽取成元数据并嵌入到 App 包里’。系统在运行时读取这份元数据来知道你的意图与快捷方式,而不是运行时去反射源代码,所以目前仅仅通过 uts 插件无法实现 shortcuts 功能,需要通过离线打包的形式(原生工程实现 AppShortcutsProvider 源码)+ uts 插件(hook 声明周期)配合实现该功能。”

原因解析
Metadata.appintents 文件并不是一种可以通过简单放置在 Resources 目录下就能在运行时直接生效的普通静态资源。它必须在 iOS 原生工程的编译阶段,由编译器分析 AppIntents 相关的 Swift/OC 源码后自动提取并生成。由于 UTS 插件在云打包时是作为独立模块进行编译和动态加载的,云打包的编译流程目前无法触发针对主 App Bundle 的 AppIntents 元数据提取机制,因此打包产物中不会包含该文件。

3. 替代方案与建议

由于云打包无法生成 Metadata.appintents,如果您需要使用 AppIntents 及其相关的 authenticationPolicy 功能,建议采用以下方案:

  • 采用离线打包:在原生 iOS 工程中直接编写并实现 AppIntents 相关的原生代码(如 AppShortcutsProvider 子类),在 Xcode 中编译时系统会自动生成 Metadata.appintents 并嵌入到主 App 包中。
  • 混合实现:通过“原生离线工程实现 AppIntents 源码” + “UTS 插件 hook 生命周期”的方式配合完成功能的调用。

希望以上分析能帮助您理清问题原因。如果您在离线打包集成 AppIntents 时遇到其他问题,欢迎继续反馈。

内容为 AI 生成,仅供参考

要回复问题请先登录注册