iOS Script

XcodeBuild命令

2016-08-11  本文已影响584人  观星

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 

<?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>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>ad-hoc</string>
</dict>
</plist>

Xcode 9

2017年12月更新:

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

<?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>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>ad-hoc</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>com.yourcompany.string</key>
        <string>xxx_adhoc</string>
    </dict>
</dict>
</plist>

新增了

<key>provisioningProfiles</key>
<dict>
    <key>com.yourcompany.string</key>
    <string>xxx_adhoc</string>
</dict>

可以为不同的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 命令」

上一篇下一篇

猜你喜欢

热点阅读