关于引入pods的iOS项目使用shell脚本编译的问题与探索

 由于自己所在公司是做生成平台的所以app自动打包是必要的而xcode和commandlinetools确实也提供了这样的功能,在没有使用pods的时候build一个project很简单,但是引入pods项目后,在build workspace的时候就出现了这样或者那样的问题了,其根本原因还是参数的问题
先贴一段脚本:
#! /bin/bash
#Program:
#    在git上拉取最新分支,创建新的分支,替换资源文件,打包,删除分支

#工程路径
proj_dir=$1

cd ${proj_dir}

#echo "reset --  hard"
#git reset --hard
#mecho "pull 新代码"
#git pull
#这里调用了Python项目对图片素材进行处理然后将执行结果写入到iOSImageLoader.txt
#python ${base_dir}/iosImageLoader.py ${ic_launcher} 
#${splash} "tmp_"${ipafilename} ${ic_title} ${ipafilename} ${h_img_0} ${h_img_1} ${h_img_2} #${h_img_3} ${h_img_4} &>iOSImageLoader.txt

#image_result=`awk 'END {print}' iOSImageLoader.txt`
#echo $image_result
#判断素材的替换结果成功继续失败退出
#if [ $image_result = "ok" ];then
#echo '------ 处理素材完成 ------'
#else
#echo '------ 处理素材出错 ------'
#exit
#fi

echo "**********************"
echo "***开始build app文件***"
echo "**********************"

echo '------------- 清理xCode缓存 -----------'

xcodebuild clean -configuration Release

echo '------------- 清理xCode缓存完毕 -----------'

mecho '------------- 开始build项目代码 -----------'

#这一句是引入pods前编译project项目的脚本
#xcodebuild -target "$targetName" -configuration Release  -sdk "iphoneos8.3" CODE_SIGN_IDENTITY="iPhone Distribution:***" PROVISIONING_PROFILE="***"

#这一句是引入pods后的脚本
xcodebuild -workspace $(PWD)/***.xcworkspace -scheme "***" -configuration 'Release' ONLY_ACTIVE_ARCH=NO CONFIGURATION_BUILD_DIR=$(PWD)/build/Release-iphoneos OBJROOT=$(PWD)/build SYMROOT=$(PWD)/build -sdk "iphoneos8.3" CODE_SIGN_IDENTITY="签名" PROVISIONING_PROFILE="签名文件对应的UUID"

mecho '------------- build项目代码完毕 -----------'

#build出来的静态报和app文件路径
#releaseDir为输出路径,ipafilename为app名称
appfile=${releaseDir}/${ipafilename}.app

echo '********************'
echo '***开始打ipa渠道包****'
echo '********************'

/usr/bin/xcrun -sdk "iphoneos8.3" PackageApplication -v "$appfile" -o "$ipapath" --embed ${basedir}"***.mobileprovision"
一般情况下问题大多数出现在 “xcodebuild -workspace $(PWD)/***.xcworkspace -scheme "***" -configuration 'Release' ONLY_ACTIVE_ARCH=NO CONFIGURATION_BUILD_DIR=$(PWD)/build/Release-iphoneos OBJROOT=$(PWD)/build SYMROOT=$(PWD)/build -sdk "iphoneos8.3" CODE_SIGN_IDENTITY="签名" PROVISIONING_PROFILE="签名文件对应的UUID"”这一句中的几个参数 他们是 ONLY_ACTIVE_ARCH 、CONFIGURATION_BUILD_DIR、OBJROOT SYMROOT。


因为这几个参数在之前的方法中不需要加入也可以正常编译,首先我们看一下ONLY_ACTIVE_ARCH这个参数,如果你的项目支持A6架构的话(armv7s)在编译的时候要将值设置成NO, 然后CONFIGURATION_BUILD_DIR这个参数要特别关心一下在build project是不输入这个参数默认的build文件都在项目目录的build目录中而在build workspace是这个一定要设置一下否则不方便找build出来的app文件和静态包文件,SYMROOT、OBJROOT也要设置一下而且最好设置成$(PWD)/build "这里用(pwd)比较安全否则可能出现pod安装的某些库编译link报错。
目前我发现的问题基本就这些!还希望经验丰富的前辈们指教。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值