设为首页 收藏本站
查看: 772|回复: 0

iOS 批量打包--Shell脚本

[复制链接]

尚未签到

发表于 2015-12-3 14:00:20 | 显示全部楼层 |阅读模式
  由于公司有批量打包的需要,只是渠道号不一样,网上搜索一番,大致有两个方式:a) 从源程序一次性打出所有渠道的ipa包,大概的思路就是利用脚本循环执行打包过程,而每次打包前都通过脚本修改项目中存放渠道号的文件为当前循环的最新渠道号,让后逐个打包。b) 提供一个ipa格式的母包 从母包生成其它所有的渠道包,可能你会问:用一个包生成其他的包可行么??
原因是这样的:因为每个渠道只是渠道号发生变化,而其他的内容又不会发生变化,而我们的渠道号又是存储在Info.plist这个文件中的,所以只要改变母包中的Info.plist文件的内容即可,而ipa包又是同zip格式进行压缩,所以基本思路就是通过zip先对母包进行解压,然后改变Info.plist的内容 最后再用zip进行压缩成相应的渠道包即可。
  通过从母包打出其他渠道的包这种方法:得到以下好处
  i.               降低了rd ,qa的工作量。
  ii.              让测试发布程序时的风险得到了控制。
  iii.              提高了打包发布工作效率。(几十个包 只需短短的几分钟)。
  iv.              提高了自动化。
  v.              不依赖mac 以及xcode环境 直接在linux 下即可完成 从母包生成其它包
  具体代码如下:(可以用xcode 创建.sh文件)
  #可以直接把把编辑好的Script.sh 文件拖到终端上 回车 或者终端输入 ./Script.sh
  #遇到权限问题可以执行 chmod 777 Script.sh
  
  
  #!/bin/sh
  
  CONFIG_ROOT_PATH="/Users/hezhujin/Desktop/"#.ipa母包的路径
  cd $CONFIG_ROOT_PATH
  
  sourceipaname="wgc_ios.ipa"  #ipa母包的名字
  appname="wgc_ios.app"        #解压后Payload目录项.app文件名需要根据自己的项目修改
  distDir="/Users/hezhujin/Desktop/Qa"   #打包后文件存储目录
  rm -rdf "$distDir "   
  mkdir "$distDir"
  unzip $sourceipaname     #解压母包文件
  
  for ((i=1001;i<1011;i++))
  do
  cd Payload
  cd $appname
  targetName="wgc_ios"
  /usr/libexec/PlistBuddy -c "set :kChannelNumber ${i}" Info.plist #修改Info.plist文件的kChannelNumber 对应的值,Info.plist中必须先存在这个Key 才能修改
  cd ../..
      zip -r "${targetName}_${i}.ipa" Payload   #打成其他渠道的包
      mv "${targetName}_${i}.ipa" $distDir      #移动打好的包到目标路径
  done
  rm -rdf Payload
  
  ///////////////////////////////////////////////////////////////////
  以下是用数组形式循环指定的渠道号 非递增形式
  #!/bin/sh
  CONFIG_ROOT_PATH="/Users/hezhujin/Desktop/"
  cd $CONFIG_ROOT_PATH
  
  sourceipaname="wgc_ios.ipa"
  appname="wgc_ios.app"  #加压后Pauload目录项.app文件名需要根据自己的项目修改
  distDir="/Users/hezhujin/Desktop/Qa"   #打包后文件存储目录
  rm -rdf "$distDir "   
  mkdir "$distDir"
  unzip $sourceipaname     #解压母包文件
  
  kChannelNumber=("aaa" "bbb" "ccc")
  for ((i=0;i<${#kChannelNumber};i++))
  do
  cd Payload
  cd $appname
  
  ipafilename=${kChannelNumber[$i]}
  targetName="wgc_ios"
      /usr/libexec/PlistBuddy -c "set :kChannelNumber ${kChannelNumber[$i]}" Info.plist
  
  cd ../..
      zip -r "${targetName}_${ipafilename}.ipa" Payload   #打成其他渠道的包
      mv "${targetName}_${ipafilename}.ipa" $distDir
  done
  rm -rdf Payload
  
  ///////////////////////////////////////////////////////////////////
  
  以下是不建议的方法:每次包都是重新编译的方法
  
  #!/bin/sh
  
  #  Script.sh
  #  shell
  #
  #  Created by hezhujin on 15/3/4.
  #  Copyright (c) 2015年 hezhujin. All rights reserved.
  #!/bin/sh
  CONFIG_ROOT_PATH="/Users/hezhujin/Desktop/wgc_ios"
  
  cd $CONFIG_ROOT_PATH
  #循环数
  CHANNELID=("aa" "bb" "cc")
  for ((i=0;i<${#CHANNELID};i++))
  do
  #删除
  rm -rf "/Users/hezhujin/Desktop/wgc_ios/build/"
  #清除
  xcodebuild -target wgc_ios clean
  #修改plist
  /usr/libexec/PlistBuddy -c "set :CHANNELID ${CHANNELID[$i]}" /Users/hezhujin/Desktop/wgc_ios/wgc_ios/Info.plist
  #/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString 1.0.4" /Users/hezhujin/Desktop/wgc_ios/wgc_ios/Info.plist
  
  #打包
  xcodebuild -target wgc_ios -configuration Distribution -sdk iphoneos build
  #生成ipa
  xcrun -sdk iphoneos PackageApplication -v "/Users/hezhujin/Desktop/wgc_ios/build/Release-iphoneos/wgc_ios.app" -o "/Users/hezhujin/Desktop/wgc_ios/wgc_ios_${CHANNELID[$i]}.ipa"
  
  done
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146862-1-1.html 上篇帖子: shell 编程基础 下篇帖子: 全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表