美文网首页
Xcode 9 多渠道自动打包脚本

Xcode 9 多渠道自动打包脚本

作者: 薛定谔的熊 | 来源:发表于2018-02-11 13:36 被阅读0次

    假设现在有个需求,就是打出100个包,每个包对应不同的渠道号。(一般有这种需求的大多为企业版app)这个渠道号可以在项目中info.plist添加一个key 和 value。如下:


    image.png
    项目中就可以直接使用[[[NSBundle mainBundle] infoDictionary] objectForKey:@"Channel"] 
    

    但是这样每打一个包就得改一下这个value重新打包,如果要打100个包那就太麻烦了。使用脚本就可以很好的解决这个问题了,原理就是每次打包时,执行脚本修改plist文件下Channel对应的值。

    脚本如下(适用workspace,如:通过cocoapods等集成三方库的项目):

    #clean build
    xcodebuild -workspace ./打包的项目名字.xcworkspace -scheme 打包的scheme名字 -configuration Release clean build
    #archive
    xcodebuild -workspace ./打包的项目名字.xcworkspace -scheme 打包的scheme名字 -configuration Release archive -archivePath ./archive
    #设置渠道号,例如channel_01、channel_02、channel_03……
    channels=("channel_01" "channel_02" "channel_03")
    for i in ${channels[@]}
    do
    #修改plist文件中渠道号key(例如:Channel)
    /usr/libexec/PlistBuddy -c "Set :Channel "$i"" ./archive.xcarchive/Products/Applications/打包出来的app名字(一般同scheme).app/info.plist
    #删除以渠道号名字命名的文件夹,防止下次打包时文件覆盖
    rm -Rf ./$i
    #导出ipa
    xcodebuild -exportArchive —exportFormat ipa -archivePath ./archive.xcarchive -exportPath ./$i -exportOptionsPlist ExportOptions.plist
    done
    #for循环完成以后删除.xcarchive文件
    rm -Rf ./archive.xcarchive
    

    注意:ExportOptions.plist文件是需要自己创建的。也可以用Xcode Archive出来一个app导出目录里自动会生成一个ExportOptions.plist文件,复制过来用即可。

    ExportOptions.plist文件内容一般如下:

    image.png

    如何使用?

    1、新建一个.sh脚本文件(如:archive.sh)(不会?创建一个txt,保存为.sh就OK了)
    2、复制上面的脚本内容到刚刚创建的.sh文件,修改脚本中对应项目名字
    3、新建一个.plist文件(如:ExportOptions.plist)设置打包方式(不会,就先用Xcode 手动archive一个包,导出目录中会自动生成这个文件,拷贝过来用)
    4、将.sh文件和.plist文件复制到你的工程目录(xcworkspace同级)
    5、打开终端,cd到工程目录,执行./archive.sh即可(若提示:Permission denied说明没有读写权限,解决办法:执行chmod 777 archive.sh命令后重试)

    完成以后就会在该目录生成对应的文件,例如:

    image.png
    6、最后,打包完成以后,删除对应的几个文件即可(或者改一改脚本,设置导出目录,自动删除等,定制更加便捷的操作)

    相关文章

      网友评论

          本文标题:Xcode 9 多渠道自动打包脚本

          本文链接:https://www.haomeiwen.com/subject/wgmktftx.html