iOS打包总结
本帖已被设为精华帖!,
预备知识
打包机器需要安装 Xcode 7,安装 xcode command line tools (用xcode-select --install
命令安装)
Xcode7.2 上架流程
iOS 开发者中的公司账号与个人账号之间有什么区别?
Bundle ID 就是 Xcode 里 iOS 项目 Target – Build Settings 下的 Bundle identifier
prefix + bundle ID 组成 App ID
Provisioning Profile 文件指定了 App ID 和 Certificate
Xcode 中 iOS 项目 Build Settings 里的
- Bundle ID
- Provisioning Profile
- Code Signing Identity 指定的 Certificate 三者需要是对应的 在一台有这个 Certificate 和 Provisioning Profile 的电脑上才可以生成这个项目的 ipa
命令行打包
使用 workspace 时的脚本
xcodebuild clean -project ./MyProject.xcodeproj -configuration Release
xcodebuild archive -workspace ./MyProject.xcworkspace -scheme MyProject -archivePath ./MyProject.xcarchive CODE_SIGN_IDENTITY="iPhone Distribution: SHANGHAI TESTERHOME GROUP CO., LTD." PROVISIONING_PROFILE="97824172-beb3-4674-a266-13f57242277f"
xcodebuild -exportArchive -archivePath ./MyProject.xcarchive -exportPath ./outputiPA -exportOptionsPlist ./exportOptions.plist
使用 project 时的脚本
xcodebuild clean -project MyProject.xcodeproj -configuration Release
xcodebuild archive -project ./MyProject.xcodeproj -scheme MyProject -archivePath ./MyProject.xcarchive CODE_SIGN_IDENTITY="iPhone Distribution: SHANGHAI TESTERHOME GROUP CO., LTD." PROVISIONING_PROFILE="97824172-beb3-4674-a266-13f57242277f"
xcodebuild -exportArchive -archivePath ./MyProject.xcarchive -exportPath ./outputiPA -exportOptionsPlist ./exportOptions.plist
用 Xcode 打包的步骤是
- Product – Clean ,对应脚本中
xcodebuild clean
命令 - Product – Archive,对应
xcodebuild archive
命令 - Export ,对应
xcodebuild -exportArchive
- Scheme 参数对应 Xcode 中的 Product – Scheme ,在项目目录执行
xcodebuild -list
命令也可以查看 - 勾选了 Shared 的 Scheme 会保存在 .xcodeproj/ 目录下的文件里,才会被版本控制系统记录,如果一个 Shared Scheme 也没有,打包命令不会自己结束,也不会报错。
- CODE_SIGN_IDENTITY 参数填证书名,可以在 OS X 系统的钥匙串应用里查看
- 钥匙串里,证书可能在登录级也可能在系统级,如果在“登录”中,其他 OS X 用户(比如
java -jar jenkins.war
启动的 Jenkins)执行命令时需要输入密码,把证书移到“系统”里就不用输密码了,也可以用 security unlock-keychai 命令解锁,也可以修改证书的信任设置 - PROVISIONING_PROFILE 参数,在 Xcode – Preference – Accounts – View Details 找到对应的 Provisioning Profiles ,右键 Show in Finder,会看到一个 ~/Library/MobileDevice/Provisioning Profiles/97824172-beb3-4674-a266-13f57242277f.mobileprovision 文件,参数填文件名(不包含扩展名)
- exportOptions.plist 文件按下面的格式写,用
xcodebuild -help
命令看键值对的说明,<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>method</key> <string>enterprise</string> <key>compileBitcode</key> <string>YES</string> </dict> </plist>
- 碰到过一个问题,exportOptions 说明里 compileBitcode 默认是 YES,但如果不写,集成的极光推送没有被优化,ipa 文件大了不少
- 版本号保存在 Info.plist 文件中,可以参考这个帖子自动增加版本号
- 在 Scheme 中指定了 archive action 的 Build Configuration 是 Release 还是 Debug ,如果指定的是 Release 想打 Debug 包,可以修改文件,也可以在命令中增加 configuration 参数
xcodebuild clean -project MyProject.xcodeproj -configuration Debug xcodebuild archive -project ./MyProject.xcodeproj -scheme MyProject -configuration Debug -archivePath ./MyProject.xcarchive CODE_SIGN_IDENTITY="iPhone Distribution: SHANGHAI TESTERHOME GROUP CO., LTD." PROVISIONING_PROFILE="97824172-beb3-4674-a266-13f57242277f" xcodebuild -exportArchive -archivePath ./MyProject.xcarchive -exportPath ./outputiPA -exportOptionsPlist ./exportOptions.plist
其他
iOS开发-Xcode Debug、Release、Archive、Profile、Analyze概念解释
每个 Xcode 大版本之间经常有变动,注意以官网为准
* 注:本文来自网络投稿,不代表本站立场,如若侵犯版权,请及时知会删除