iOS 构建配置与 AdHoc 打包说明
1. 背景
在 iOS 项目中,通常需要支持 多个环境的构建和分发,比如:
- 开发环境 (Debug) → 本地调试
- 内测环境 (AdHoc) → 提供 QA / 产品经理测试
- 预发布环境 (AdHoc_Release) → 和正式版配置一致,但通过 AdHoc 分发
- 正式环境 (Release) → 上架 App Store
为了方便 CI/CD 和团队协作,我们在项目中自定义了 AdHoc
和 AdHoc_Release
配置。
2. 各构建配置的区别
配置名称 | 用途 | 证书/Provisioning Profile | 典型分发方式 | 日志 & 调试 | 优化 |
---|---|---|---|---|---|
Debug | 本地开发调试 | 开发证书 (Development) | Xcode 直接运行 | ✅ 开启日志 | 无优化 |
AdHoc | 内测分发 | AdHoc 证书 | 绑定 UDID,蒲公英/企业分发 | ✅ 可保留少量日志 | 接近 Release |
AdHoc_Release | 预发布(灰度) | AdHoc 证书 | 绑定 UDID,蒲公英 | ❌ 关闭日志 | 与 Release 相同 |
Release | 正式上架 App Store | App Store 发行证书 | App Store | ❌ 关闭日志 | 最大优化 |
3. Xcode Archive 默认使用哪个配置?
- 默认情况下,
Product → Archive
使用 当前 Scheme 的 Archive 配置 - 通常是 Release,可以在
Product → Scheme → Edit Scheme → Archive → Build Configuration
修改为AdHoc
或AdHoc_Release
命令行可直接指定:
xcodebuild archive \
-workspace MyApp.xcworkspace \
-scheme MyApp \
-configuration AdHoc \
-archivePath build/MyApp-AdHoc.xcarchive
AdHoc 包的特殊要求和实现方案
为了方便测试人员区分 内测包 和 正式包,我们为 AdHoc
包添加 带“开发”角标的 App Icon。
✅ 实现方案
1. 在项目中添加两个 AppIcon 集合
AppIcon
→ 正式版 iconAppIcon-Dev
→ 内测版 icon(在 icon 上加“开发”水印/角标)
Xcode 中结构示例:
Assets.xcassets/
├── AppIcon.appiconset # 正式版
└── AppIcon-Dev.appiconset # 内测版(带开发角标)
AppIcon-Dev
里的每个 PNG 带有角标,比如右上角写“开发版”。
2. 在 Build Settings 中区分配置使用的 Icon 名称
- 进入 TARGETS → Build Settings → Packaging → Asset Catalog App Icon Set Name
- 为不同的构建配置指定不同的 icon 集合:
- Release →
AppIcon
- AdHoc / Debug →
AppIcon-Dev
可以用 .xcconfig
管理,示例:
// Debug.xcconfig & AdHoc.xcconfig
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon-Dev
// Release.xcconfig & AdHoc_Release.xcconfig
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon
- 在 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,无任何角标