当前位置: 首页 > news >正文

iOS 构建配置与 AdHoc 打包说明

iOS 构建配置与 AdHoc 打包说明

1. 背景

在 iOS 项目中,通常需要支持 多个环境的构建和分发,比如:

  • 开发环境 (Debug) → 本地调试
  • 内测环境 (AdHoc) → 提供 QA / 产品经理测试
  • 预发布环境 (AdHoc_Release) → 和正式版配置一致,但通过 AdHoc 分发
  • 正式环境 (Release) → 上架 App Store

为了方便 CI/CD 和团队协作,我们在项目中自定义了 AdHocAdHoc_Release 配置。


2. 各构建配置的区别

配置名称用途证书/Provisioning Profile典型分发方式日志 & 调试优化
Debug本地开发调试开发证书 (Development)Xcode 直接运行✅ 开启日志无优化
AdHoc内测分发AdHoc 证书绑定 UDID,蒲公英/企业分发✅ 可保留少量日志接近 Release
AdHoc_Release预发布(灰度)AdHoc 证书绑定 UDID,蒲公英❌ 关闭日志与 Release 相同
Release正式上架 App StoreApp Store 发行证书App Store❌ 关闭日志最大优化

3. Xcode Archive 默认使用哪个配置?

  • 默认情况下,Product → Archive 使用 当前 Scheme 的 Archive 配置
  • 通常是 Release,可以在
    Product → Scheme → Edit Scheme → Archive → Build Configuration
    修改为 AdHocAdHoc_Release

命令行可直接指定:

xcodebuild archive \-workspace MyApp.xcworkspace \-scheme MyApp \-configuration AdHoc \-archivePath build/MyApp-AdHoc.xcarchive

AdHoc 包的特殊要求和实现方案

为了方便测试人员区分 内测包正式包,我们为 AdHoc 包添加 带“开发”角标的 App Icon


✅ 实现方案

1. 在项目中添加两个 AppIcon 集合
  • AppIcon → 正式版 icon
  • AppIcon-Dev → 内测版 icon(在 icon 上加“开发”水印/角标)

Xcode 中结构示例:
Assets.xcassets/
├── AppIcon.appiconset # 正式版
└── AppIcon-Dev.appiconset # 内测版(带开发角标)
AppIcon-Dev 里的每个 PNG 带有角标,比如右上角写“开发版”。


2. 在 Build Settings 中区分配置使用的 Icon 名称
  1. 进入 TARGETS → Build Settings → Packaging → Asset Catalog App Icon Set Name
  2. 为不同的构建配置指定不同的 icon 集合:
  • ReleaseAppIcon
  • AdHoc / DebugAppIcon-Dev

可以用 .xcconfig 管理,示例:

// Debug.xcconfig & AdHoc.xcconfig
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon-Dev// Release.xcconfig & AdHoc_Release.xcconfig
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon
  1. 在 Scheme 或 CI/CD 里指定配置
    • 内测分发(AdHoc)
	xcodebuild archive \-scheme MyApp \-configuration AdHoc \-archivePath build/MyApp-AdHoc.xcarchive

生成的 IPA 会自动使用 AppIcon-Dev

•	正式发布(Release)
	xcodebuild archive \-scheme MyApp \-configuration Release \-archivePath build/MyApp-Release.xcarchive

✅ 最终效果
• AdHoc 内测包
• 安装后桌面 icon 右上角有 “开发”标识
• 方便测试人员快速区分内测和正式版
• Release 正式包
• 使用正常 icon,无任何角标

http://www.dtcms.com/a/283681.html

相关文章:

  • 从零开发推客小程序系统:完整技术方案与实战经验
  • C语言:20250717笔记
  • Redis深度解析:从缓存原理到高并发实战
  • AI算法机器学习主要类型
  • 专业云端视觉计算解决方案:云渲染云电脑
  • 【AI论文】基于反射生成模型的测试时动态缩放方法
  • 【软件测试】软件测试分类与方法解析:目标到工具
  • HANA SQLScript中的变量类型汇总
  • 云原生环境下的安全控制框架设计
  • USB导出功能(QT)
  • Windows10笔记本电脑开启BIOS
  • 云手机网络加速全攻略:解决游戏卡顿与APP连接失败困扰
  • 玖[9],相机/镜头/光源
  • yolo位置损失中的权重项的作用是什么
  • YOLO融合[CVPR2025]EVSSM中的EDFFN模块
  • LeetCode20
  • 2D视觉系统标定流程与关键要求
  • 不同相机CMOS噪点对荧光计算的影响
  • 前端设计模式应用精析
  • Java零基础快速入门
  • Python应用指南:使用PyKrige包实现ArcGIS的克里金插值法
  • Ceph OSD.419 故障分析
  • git的cherry-pick
  • AI安全威胁之MCP Server投毒攻击实践
  • Git 多人协作实战:从基础操作到分支管理全流程记录
  • LiteSQL:让C++与数据库无缝对接的ORM利器
  • 物联网主机在化工园区安全风险智能化管控平台中的应用
  • 2025TGRS多尺度稀疏交叉注意力网络
  • 如何在PyCharm中删除虚拟环境
  • 建立框架思维