XcodeBuild命令

1.生成xcarchive文件

如果你的工程使用了workspace,你就需要指明workspace的名称,使用了cocoapods的项目,我们在打开时都是使用xcworkspace文件,因此,在编译cocoapods项目时,必须指明workspace的名称

xcodebuild -workspace CTQProject.xcworkspace -scheme CTQProject -archivePath ~/Desktop/CTQProject.xcarchive archive 

如果最后面不加上archive,则默认为build。

2.生成ipa文件

xcodebuild -exportArchive -exportFormat IPA -archivePath ~/Desktop/CTQProject.xcarchive  -exportPath ~/Desktop/CTQProject.ipa

这一步可以指定Provisioning Profile 文件,加上-exportProvisioningProfile参数就可以

xcodebuild -exportArchive -exportFormat IPA -archivePath ~/Desktop/CTQProject.xcarchive  -exportPath ~/Desktop/CTQProject.ipa  -exportProvisioningProfile "XC Ad Hoc: com.chuangtoubang.ctb"

这个参数的值为Provisioning Profile的名称,在iOS dev center和Xcode中都可以看到,不过Xcode中貌似没有办法复制。使用Xcode打包时,你选择那个Provisioning Profile,在这里就输入那个的名字

Xcode 8下

xcodebuild -exportArchive -archivePath ~/Desktop/Live.xcarchive  -exportPath ~/Desktop/Live.ipa  -exportOptionsPlist ~/Desktop/adhoc.plist CODE_SIGN_IDENTITY="iPhone Distribution: XXXXXX (XXXXXX)" PROVISIONING_PROFILE="XC Ad Hoc: com.XXXXX.XXXXX"

cat ~/Desktop/adhoc.plist 





    compileBitcode
    
    method
    ad-hoc


Xcode 9

2017年12月更新:

-exportProvisioningProfile已经不能使用了,以前不设置exportProvisioningProfile让Xcode自己去找也不行了,现在必须在exportOptionsPlist中指明provisioning profile.现在手动使用Xcode带包,输出ipa的同时,exportOptionsPlist也会同时输出,直接参考那个就可以。





    compileBitcode
    
    method
    ad-hoc
    provisioningProfiles
    
        com.yourcompany.string
        xxx_adhoc
    


新增了

provisioningProfiles

    com.yourcompany.string
    xxx_adhoc

可以为不同的bundle id设置不同的provisioning profile,能解决我们现在多个bundle id自动打包的问题。

shell 获取bundle id

通过Info.plist读取,如果不是写死的,读取到的将会是

defaults read /Users/wangxuefeng/WorkSpace/XALiveSDK/Live/Info.plist "CFBundleIdentifier"

$(PRODUCT_BUNDLE_IDENTIFIER)

$(PRODUCT_BUNDLE_IDENTIFIER)显然不是我们想要的值,可以通过xcodebuild -showBuildSettings显示这些变量的值,然后提取。

var=`xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER` 

echo ${var#*= }

参考

动手搭建 iOS CI 环境之「了解 xcodebuild 命令」

你可能感兴趣的:(XcodeBuild命令)