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,無任何角標