iOS 命令行打包--xcworkspace

参考:

打包的具体操作步骤:

  https://www.jianshu.com/p/6a0aa8cd2e97

打包时使用到的参数详解,参考这篇:

  https://debugtalk.com/post/iOS-Android-Packing-with-Jenkins-details/index.html

 

xcodebuild命令详解:

  https://www.jianshu.com/p/770d5df137bf 

 注意:

补充一点:

  xcodeproj和xcworkspace的区别是:xcworkspace使用了cocoapods来管理第3方库 

  采用Cocoapod管理项目依赖,每次拉取最新代码后直接编译可能会报错。这往往是因为其他同事更新了依赖库(新增了第三方库或升级了某些库),而本地还采用之前的第三方库进行编译,从而会出现依赖库缺失或版本不匹配等问题。

  应对的做法是,在每次build之前都更新一下Cocoapod。

# Update pod repository
pod repo update
# Install pod dependencies
pod install

 

  配置完后,先进行构建 ,可以 拉到代码 再进行第2步的修改

 

  可以看到已经将代码 clone到本地了

 

 

 

 

在执行正式的脚本前,要做一些准备工作:

ios使用pods管理第三方库,每次构建job时,需要先更新pods库

。和python中用pip管理第3方库类似。不更新第3方库,将导致程序中依赖第3方库的功能不可用

 

export LANG=en_US.UTF-8
# xcworkspace文件所在目录 
TARGET_PATH="trunk/5iwork/ios"
#Podfile路径
PODFILE=${WORKSPACE}/${TARGET_PATH}

cd ${PODFILE}

echo -e "============Update pod repository============"
pod repo update

echo -e "============Install pod dependencies============"
echo ${PODFILE}
pod install

 

注意这些命令要在项目目录xcworkspace文件所在目录执行

打包脚本:

 

## !/bin/sh
## 项目名
TARGET_NAME="cbs_new5iwork"
## xcworkspace文件所在目录 
TARGET_PATH="trunk/5iwork/ios"
## Scheme名
SCHEME="cbs_new5iwork"
##=======================
## 编译类型
BUILD_TYPE=staging #jenkins布署环境,通过代码配置的:打包uat时选择的是staging|线上对应的是Release,Release包需要开发打包
#BUILD_TYPE="Release" #测试编译类型
## 当前目录
SORCEPATH=${WORKSPACE}  #jenkins job配置目录 
#SORCEPATH="/Users/5i5j/Desktop" #测试路径
# workspace名
SPACE=${WORKSPACE}/${TARGET_PATH}/${TARGET_NAME}.xcworkspace
##xcarchive文件的存放路径
ARCHIVEPATH=${SORCEPATH}/build/${SCHEME}.xcarchive
## ipa文件的存放路径
EXPORTPATH=${SORCEPATH}/build/${SCHEME}
## ExportOptions.plist文件的存放路径
#EXPORTOPTIONSPLIST=$SORCEPATH/build/ExportOptions.plist
EXPORTOPTIONSPLIST=${WORKSPACE}/${TARGET_PATH}/cbs_new5iwork/Resources/ExportOptions.plist

## 导出后的ipa路径
EXPORTPATHIPA=${SORCEPATH}/build/${SCHEME}/${SCHEME}.ipa



## 清理老的xcarchive文件
rm -rf ${ARCHIVEPATH}

echo -e "============First Build Clean============"
## 清理缓存
xcodebuild clean -workspace ${SPACE} -scheme ${SCHEME} -configuration ${BUILD_TYPE}

echo -e "============Build Clean============"
## 输出关键信息
echo -e "  TARGET_NAME    : ${TARGET_NAME}"
echo -e "  BUILD_TYPE    : ${BUILD_TYPE}"
echo -e "  SORCEPATH    : ${SORCEPATH}"
echo -e "  ARCHIVEPATH    : ${ARCHIVEPATH}"
echo -e "  EXPORTPATH    : ${EXPORTPATH}"
echo -e "  EXPORTOPTIONSPLIST    : ${EXPORTOPTIONSPLIST}"

echo -e "============Build Archive============"

## 导出archive包
xcodebuild archive -workspace ${SPACE} -scheme ${SCHEME} -archivePath ${ARCHIVEPATH}  -configuration ${BUILD_TYPE}

echo -e "============Build Archive Success============"

echo -e "============Export IPA============"

## 导出IPA包
xcodebuild -exportArchive -archivePath ${ARCHIVEPATH} -exportPath ${EXPORTPATH} -exportOptionsPlist ${EXPORTOPTIONSPLIST}

echo -e "============Export IPA SUCCESS============"

## 编译完成时间 20181030_0931
BUILD_DATE="$(date +'%Y%m%d_%H%M')"

## info.plist路径
PROJECT_INFOPLIST_PATH="${SORCEPATH}/${TARGET_PATH}/${TARGET_NAME}/Info.plist"
## 取版本号
BUNDLESHORTVERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${PROJECT_INFOPLIST_PATH}")
## 取build值
VERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${PROJECT_INFOPLIST_PATH}")
## ipa更名规则  项目名V版本_年月日_时分
IPANAME="${TARGET_NAME}V${BUNDLESHORTVERSION}_${BUILD_DATE}.ipa"
## 更名后ipa路径
EXPORTPATHNEWIPA=${EXPORTPATH}/${IPANAME}

echo -e "============Export end :${BUILD_DATE}============"
echo -e "============IPA Old Name: ${EXPORTPATHIPA}============"
echo -e "============IPA New Name: ${EXPORTPATHNEWIPA}============"

## IPA更名
cp $EXPORTPATHIPA $EXPORTPATHNEWIPA

echo -e "============Create New Name Success============"

## 删除老IPA
##rm $EXPORTPATHIPA

##echo -e "============Delete Old Name Success============"

 

posted @ 2019-09-10 13:19  wangju003  阅读(1170)  评论(0编辑  收藏  举报