iOS 构建配置与 AdHoc 打包说明

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

命令行可直接指定:

bash 复制代码
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 集合:
  • Release → AppIcon
  • AdHoc / Debug → AppIcon-Dev

可以用 .xcconfig 管理,示例:

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,无任何角标

相关推荐
Fatbobman(东坡肘子)10 小时前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
开发语言·人工智能·redis·ios·swiftui·iphone·swift
茶底世界之下18 小时前
斜光下的旧自行车:用 Awaking 留一版复古胶片色
ios·app·产品
2501_916008891 天前
iPhone 设备信息查看,用 KeyMob 看型号、序列号、电池健康和 UDID
android·ios·小程序·https·uni-app·iphone·webview
茶底世界之下2 天前
iPhone Duo 适配实战,Awaking 踩过的 8 个坑
ios·swiftui·swift
跨境数据猎手2 天前
HTTP 响应体编码与压缩:识别、解码
网络协议·http·ios
也非非也2 天前
iPhone 中国区 AI 落地:Apple 与阿里千问合作的技术观察
大数据·人工智能·ios·agent·iphone·智子
茶底世界之下2 天前
同一片泳池,清透还是奶油胶片?用 Awaking 做两版成片
ios
2501_916008892 天前
iOS App 图标、启动屏和多语言搭配 方法,上架前使用KXBuild一次做好 App 图标
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
2501_915918412 天前
iOS 推送通知怎么实现,从 APNs p8 密钥到 iOS 真机收到第一条推送
vscode·ios·objective-c·个人开发·swift·敏捷流程
茶底世界之下3 天前
雨夜街角裁成方图,人物与冷暖光还能共存吗?
ios