一條命令 快速配置 Xcode 各類 環境

開發時常常須要提交ipa 每次手動打包 有點麻煩git

理想的狀況時執行一條命令 就自動打包生成ipagithub

可是生成ipa以前 測試環境和正式環境一些參數是不一樣的. 好比網絡環境 確定有測試和線上接口 還有咱們用的小米推送也有測試和線上環境之分  還有證書和受權文件選擇.shell

大概研究了下  這些均可以經過修改文件內容來達到目的xcode

而修改文件內容就用 sed 強大的編輯功能網絡

課前補充知識sed命令詳解http://my.oschina.net/u/727843/blog/731288併發

參考個人配置  先貼出來 一步一步走ide

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

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 就更方便了

相關文章
相關標籤/搜索