xcodebuild批量打包之区分不同的渠道

原文地址:http://blog.cnrainbird.com/index.php/2012/12/10/xcodebuild_pi_liang_da_bao_zhi_qu_fen_bu_tong_de_qu_dao/

  之前有写过《最近研究xcodebuild批量打包的一些心得》因为当时已经研究过一个工程多target,所以在多target的基础上,很容易按照target名字进行打包,于是建立了一堆的target以后,然后写了一个脚本批量打包。然后想着以后打包省事儿,直接脚本一执行,走你。结果今天需要再打一批包,拿到列表以后一看发现:新加了几个渠道,去掉了几个渠道。哎呀,妈呀,这个列表咋还是变的呢?这么一来,我可以不用删除多余的target,但是需要新建target呀,细想一下发现:我新建target只是为了加一个变量,用来区分这个target,那么我可不可以直接以渠道名为参数传给xcodebuild然后就自动生成不同的target呢?
说干就干,先前查资料的时候,有看到说可以给xcodebuild传参数的:

xcodebuild -sdk xxx -target xxx SYMROOT=xxx API_TYPE=1

API_TYPE就是要识别的macro喽,果断换成自己的区别标识,一通编译打包以后,发现:不好使!神马情况呢?一通google以后发现有说用GCC_PREPROCESSOR_DEFINITIONS可以。还是用上面的例子:
xcodebuild -sdk xxx -target xxx GCC_PREPROCESSOR_DEFINITIONS="API_TYPE=1"

发现这样竟然是好使的,于是又用下面的语法试了试:
xcodebuild -sdk xxx -target xxx GCC_PREPROCESSOR_DEFINITIONS="API_TYPE=一"
xcodebuild -sdk xxx -target xxx GCC_PREPROCESSOR_DEFINITIONS="API_TYPE=a"

发现,这个macro只能用数字!也就是说,虽然你传进去一个API_TYPE=1,而编译器也只是在最开始执行编译以前定义了一个宏:
#define API_TYPE 1

  而这么定义法是只能用数字,不能用字母,更别提字符串或者中文了。花了挺长的时间才学习到这个东东,那么接下来就变得简单了:
把所有的渠道搁到一个静态的数组里。然后通过每次传入不同的序列号打成不同的渠道包呗。
到这里,终于,可以由一堆target变回两个target了(一个用来作编译打包时的模板;一个自己测试时用)。
完整的代码片段:

xcodebuild clean
xcodebuild -target iphone GCC_PREPROCESSOR_DEFINITIONS="QUDAONUM=9"
xcrun -sdk iphoneos PackageApplication -v build/Release-iphoneos/iphone.app -o ~/Desktop/9.ipa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在上一篇文章中,我们介绍了如何通过脚本自动化生成证书和配置文件。接下来,我们将介绍如何使用这些证书和配置文件自动化打包 iOS 应用程序。 ## 1.准备工作 在开始之前,我们需要准备以下工具和文件: - Xcode:我们需要在 Xcode 中创建一个用于自动构建的 Scheme。 - 证书和配置文件:我们在上一篇文章中生成了用于打包的证书和配置文件。 ## 2.创建 Scheme 在 Xcode 中打开你的项目,选择 Product -> Scheme -> Edit Scheme。 在左侧菜单中选择 Archive,并勾选“Include app symbols for your application…”和“Reveal Archive in Organizer”。 在 Build Configuration 中选择 Release,并选择你的项目对应的签名证书和配置文件。 保存修改后的 Scheme。 ## 3.自动打包脚本 我们可以使用脚本来自动化打包 iOS 应用程序。以下是一个简单的 bash 脚本,它使用 xcodebuild 命令来构建项目。 ```bash #!/bin/bash # 变量设置 SCHEME_NAME="YourSchemeName" PROJECT_NAME="YourProjectName" CONFIGURATION="Release" EXPORT_OPTIONS_PLIST="./ExportOptions.plist" ARCHIVE_PATH="./build/${PROJECT_NAME}.xcarchive" EXPORT_PATH="./build/${PROJECT_NAME}" DATE=`date +%Y-%m-%d-%H-%M-%S` # 清理构建目录 rm -rf ./build # 构建项目 xcodebuild archive \ -scheme ${SCHEME_NAME} \ -project ${PROJECT_NAME}.xcodeproj \ -configuration ${CONFIGURATION} \ -archivePath ${ARCHIVE_PATH} # 导出 IPA 包 xcodebuild -exportArchive \ -archivePath ${ARCHIVE_PATH} \ -exportOptionsPlist ${EXPORT_OPTIONS_PLIST} \ -exportPath ${EXPORT_PATH}/${DATE} # 打开导出目录 open ${EXPORT_PATH} ``` 在脚本中,我们设置了一些变量,包括 Scheme 名称、项目名称、构建配置、导出选项文件路径、存档路径、导出路径和日期时间。脚本清理了之前的构建目录,然后使用 xcodebuild 命令构建项目,并导出 IPA 包。最后,脚本打开了导出目录。 注意:这里的 ExportOptions.plist 文件是我们在上一篇文章中生成的,它包含了我们的签名证书和配置文件信息。如果你使用不同的证书和配置文件,需要相应修改该文件。 ## 4.执行脚本 将脚本保存为一个文件,例如 build.sh,并使用终端命令执行该脚本。 ```bash sh build.sh ``` 脚本执行完成后,将会在 build 目录下生成一个以项目名称命名的文件夹,其中包含了导出的 IPA 包。 ## 5.总结 本文介绍了如何使用脚本自动化打包 iOS 应用程序。我们可以通过创建 Scheme 和使用 xcodebuild 命令来实现自动化构建和导出。在下一篇文章中,我们将介绍如何使用 Fastlane 自动化打包和发布 iOS 应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值