You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

App Extension能否根据构建场景有条件地纳入安装包?

条件化引入App Extension的最优方案

核心思路完全不需要复制多份主Target,也不用手动调整Extension嵌入配置,基于你已经建好的三类Build Configuration和Fastlane工作流就能实现全自动化的按需打包。

具体配置步骤

  • 先将两个App Extension都加入主Target的「Embed App Extensions」构建阶段,无需按场景手动增减
  • 分别打开两个Extension Target的Build Settings,找到SKIP_INSTALL配置项,按你的场景给不同Build Configuration赋值:
    • 接近开发完成的Extension A:Debug=NO、TestFlight=NO、Release=YES
    • 仍在开发的Extension B:Debug=NO、TestFlight=YES、Release=YES
  • 给主Target新增一个靠前的Run Script构建阶段,加入以下脚本兜底,避免不需要的Extension被意外打入包:
# 按构建场景清理不需要的Extension
if [ "${CONFIGURATION}" = "Release" ]; then
    rm -rf "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/PlugIns/"*.appex
elif [ "${CONFIGURATION}" = "TestFlight" ]; then
    rm -rf "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/PlugIns/ExtensionB.appex"
fi
  • 你的Fastlane lane不需要做额外调整,直接按原有逻辑指定对应Configuration构建即可,CI环境下同一分支跑不同lane就能生成符合要求的三类包,无需人工介入。

方案优势

  • 只需要维护1份主Target和2份Extension Target配置,没有额外维护成本
  • 完全兼容你现有的编译器Flag、功能显隐配置逻辑
  • 不需要修改工程结构,所有配置都可随代码提交到仓库,CI/CD流程无需额外改造

内容的提问来源于stack exchange,提问作者Colin Tremblay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:54:06