由于公司有批量打包的需要,只是渠道号不一样,网上搜索一番,大致有两个方式: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

iOS 批量打包--Shell脚本的更多相关文章

  1. Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法

    一.需求背景     因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间.为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合cr ...

  2. 关于 iOS 批量打包的总结

      关于 iOS 批量打包的总结 本文作者: 伯乐在线 - Tsui YuenHong .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 如果你曾经试过做多 target 的项目,到了测试人员要 ...

  3. java classpath批量设置shell脚本

    java classpath批量设置shell脚本   注意:linux bash jar文件之间的分隔符是':'    export JAR_HOME=path to directory which ...

  4. ios批量打包

    最近我们接到了新的需求,需要打出类似xx001-xx100共100个这样的ipa渠道包,不需要签名.(这批ipa包后续会用企业证书签名,不会影响AppStore的) 这些包所有的功能.内容都是一样的, ...

  5. 40、IOS自动打包-Python脚本

    第一种:基于编译的打包 编译工程--找到.app文件--新建Payload文件夹--拷贝.app到Payload文件夹--压缩成zip--更改后缀名为ipa--完成! 第二种(有问题,暂时不需要看) ...

  6. weblogic 反序列化补丁绕过漏洞的一个批量检测shell脚本(CVE-2017-3248 )

    ~ 以下内容,仅供学习参考 ~ weblogic 反序列化补丁绕过漏洞已经出了两个月了,balabala ~~~ 废话不说,拿到该漏洞的利用工具weblogic.jar,但只能一个个检测ip和端口,效 ...

  7. iOS开发系列-Shell脚本编译SDK

    Library静态库Shell脚本 #!/bin/bash #要build的target名 target_Name="IFlyMSC" #编译模式 Release.Debug bu ...

  8. iOS开发系列-Shell脚本生成IPA

    概述 在公司开发到了测试阶段需要频繁打包交付给测试,看似简单的工作,重复的流程总是感觉不是那么好,我们可以借助苹果提供的编译指令编译项目. 自动化脚本编译打包IPA 常见的iOS项目就是基于xcode ...

  9. iOS 批量打包

    如果你曾经试过做多 target 的项目,到了测试人员要测试包的时候,你就会明白什么叫“生不如死”.虽然 Xcode 打包很方便,但是当你机械重复打 N 次包的时候,就会觉得这纯粹是浪费时间的工作.所 ...

随机推荐

  1. What are the main disadvantages of Java Server Faces 2.0?

    http://stackoverflow.com/questions/3623911/what-are-the-main-disadvantages-of-java-server-faces-2-0/ ...

  2. Articles Every Programmer Must Read

    http://javarevisited.blogspot.sg/2014/05/10-articles-every-programmer-must-read.html Being a Java pr ...

  3. CUDA编程

    目录: 1.什么是CUDA 2.为什么要用到CUDA 3.CUDA环境搭建 4.第一个CUDA程序 5. CUDA编程 5.1. 基本概念 5.2. 线程层次结构 5.3. 存储器层次结构 5.4. ...

  4. 套接字I/O模型-完成端口IOCP

    “完成端口”模型是迄今为止最为复杂的一种I/O模型.然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和W ...

  5. Openjudge计算概论-奇数单增序列

    /*===================================== 奇数单增序列 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个长度为N(不大于500)的正整数序列 ...

  6. Linux-HAproxy+Keepalived

    HAproxy+++++++++++++Info+++++++++++VIP:192.168.1.222HA-Master IP:192.168.1.117HA-Backup IP:192.168.1 ...

  7. python3多线程趣味详解

    python3的多线程很多人无法理解是怎么运行的,因此本文从程序猿的日常生活出发,写了一个由浅入深的多线程教程,这样子大家就不会觉得陌生了,多线程真的很简单很简单! 不要讲多线程局限于库或者框架,自己 ...

  8. ASP.NET MVC3升级到ASP.NET MVC4 的方法

    ASP.NET MVC3升级 ASP.NET MVC4 的方法: 1.先去掉引用的System.Web.Mvc.dll(MVC3版本),重新引入System.Web.Mvc.dll(MVC4版本) 2 ...

  9. 【Reporting Services 报表开发】— 表达式

    一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...

  10. [mysql] mysql主从复制(基于日志点)

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修 ...