一条命令 快速配置 Xcode 各种 环境

开发时经常需要提交ipa 每次手动打包 有点麻烦

理想的情况时执行一条命令 就自动打包生成ipa

但是生成ipa之前 测试环境和正式环境一些参数是不同的. 比如网络环境 肯定有测试和线上接口 还有我们用的小米推送也有测试和线上环境之分  还有证书和授权文件选择.

大概研究了下  这些都可以通过修改文件内容来达到目的

而修改文件内容就用 sed 强大的编辑功能

课前补充知识sed命令详解http://my.oschina.net/u/727843/blog/731288

参考我的配置  先贴出来 一步一步走

1进入项目目录  xxxx:项目绝对路径  获取项目名称

#指定编译模式

build_model="Debug"

project_path="xxxxx"

cd ${project_path}

project_name=$(ls | grep xcodeproj | awk -F.xcodeproj'{print $1}')

2 info.plist 相关配置

这里要用到/usr/libexec/PlistBuddy 专门修改.plist文件

project_infoplist_path=${project_path}/${project_name}/Info.plist

PlistBuddy="/usr/libexec/PlistBuddy

取版本号

bundleShortVersion=$(${PlistBuddy} -c"print CFBundleShortVersionString"${project_infoplist_path})

取build值

bundleShortVersion=$(${PlistBuddy} -c"print CFBundleVersion"${project_infoplist_path})

小米推送设置

MiSDKRunKey="MiSDKRun"

MiSDKRun=$(${PlistBuddy} -c"print $MiSDKRunKey"${project_infoplist_path})

#不存在添加 不同则修改

if [ "$MiSDKRun" = "" ]; then

 #由于没有添加字段 和 值为"" 空 无法区分判断 索性都先删除

 ${PlistBuddy} -c "delete :$MiSDKRunKey" ${project_infoplist_path}

 ${PlistBuddy} -c"add :$MiSDKRunKey string $build_model"${project_infoplist_path}

 echo"add $MiSDKRunKey"

elif [ "$MiSDKRun" != "$build_model" ]; then

  ${PlistBuddy} -c"set :$MiSDKRunKey $build_model"${project_infoplist_path}

  echo"update $MiSDKRunKey"

fi

${PlistBuddy} -c "delete :$MiSDKRunKey" ${project_infoplist_path}

3修改配置文件

#自定义配置文件 路径  

configure_path="${project_name}/Classes/Tools/YXQCommon.h"

sed -i "" "s?#define REVIEW_MODE[^\n]*?#define REVIEW_MODE       0?"${configure_path}

#-i "" 是必须的 为了备份 为空的话就不备份

#只是改了个宏定义 根据它来判断 用什么接口 为0是测试环境 1 为正式环境

获取大概位置 修改授权文件 证书配置

#自定义项目文件相对路径

project=${project_name}.xcodeproj/project.pbxproj

sed 一般只支持单行 项目文件明显是多行 就要倒找需要更改的行数范围

这样搜索的都是通用字符串 配置文件更改行数改变后 依然可以搜索到所在范围

#/End XCBuildConfiguration section 打开看.pbxproj详情 只有这个字符串固定

#找到匹配字符串所在行

debugTag="Debug[^\n]*{"

releaseTag="Release[^\n]*{"

endTag="End XCBuildConfiguration section"

debug=`sed -n "/$debugTag/=" ${project}`

#debugTag搜索出来会有两个结果 需要改变的行数是后面匹配到的 所以取结果的第二行

debug=`echo "$debug" | sed -n "2p"`

release=`sed -n "/$releaseTag/=" ${project}`

release=`echo "$release" | sed -n "2p"`

end=`sed -n "/$endTag/=" ${project}`

#打印行数

echo "debug = $debug release = $release end = $end"

start=$debug

end=$release

#打印行数看看

echo "start = $start end = $end"

自定义debug授权文件 自行查看 需要更换时更换

自定义debug证书 自行查看 需要更换时更换

profile="xxxxx"

identity="\"iPhone Developer: xx \(xxxxx\)\";"

#release 相关证书 授权文件也要单独配置

sed -i "" -e "$start,$end s/\(PROVISIONING_PROFILE = \"\).*\"/\1$profile\"/g"  -e "$start,$end s/\([^{]*CODE_SIGN_IDENTITY[^{]* = \)\([^{]*\)/\1$identity/"  ${project}

#sed 多行匹配 多点修改 模式

#改变指定行范围的匹配字符串 不加g 只处理第一次匹配  加上p会 多插入一行 -e 多点编辑

#这里也要去补一下正则了 .* 任意n个非空字符    [^{]* 任意n个非{ 字符

如果有其他需要修改的 照着修改就行了


其他配置也可自行设置

到这里 xcode 相关配置 修改已完成 下一步就是 打包了

#之前研究过IOS工程自动打包并发布脚本实现http://my.oschina.net/u/727843/blog/391946可以去看看

有个更强大的工具 就是fir了http://fir.im/

自动配置itms-services://协议 只需提供ipa  还提供了一键打包发布相关命令

1首先要自定义 更新log 吧

请求输入内容 回车后继续执行下一步

echo -n "enter chages log:"

read log

fir_log="$log \n测试\n fir auto debug"

echo -e"log is $fir_log \nnow goon."

2打包并发布到fir

#token fir 网站获取

fir_token="xxxxx"

#自定义 ipa 保存路径

out_path="/Users/xx/Desktop/ipa/$build_model"

#如果path 不存在创建下

if [ ! -x"$out_path" ]; then

  mkdir"$out_path"

fi

#获取当前系统时间

time=`date +%y-%m-%d:%Hh%Mm%Ss`

#根据时间 版本号等定义ipa name

name="$build_model+$project_name-$bundleShortVersion-$bundleVersion+$time"

echo"the ipa name is $name.ipa"

#fir 打包上传命令

fir build_ipa -o ${out_path} -w -S ${project_name} -n "$name"-C ${build_model} -p -c ${fir_log} -Q -T ${fir_token}

其他相关配置查看 fir官网https://github.com/FIRHQ/fir-cli/blob/master/README.md

3如果上传完成后 想更改ipa 名字

echo -n"enter name (rename the ipa):"

readlog

if [ "$log" = "" ]; then

  echo "input name is null"

else

  cd ${out_path}

  mv $name.ipa $log.ipa

  echo "renamed the ipa"

fi

主要是懒  经常忘记 这些配置文件更改.

我去不能上传附件?一键配置debug环境并fir打包上传.sh 

把已上命令放在一个文件里  用终端打开执行就可以了 

终端可以设置    exit 自动关闭窗口 当shell完全退出后关闭

如果你会用 alfred 就更方便了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容