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

来源:互联网 发布:unity3d遮罩shader 编辑:程序博客网 时间:2024/06/06 02:23
 由于自己所在公司是做生成平台的所以app自动打包是必要的而xcode和commandlinetools确实也提供了这样的功能,在没有使用pods的时候build一个project很简单,但是引入pods项目后,在build workspace的时候就出现了这样或者那样的问题了,其根本原因还是参数的问题先贴一段脚本:
#! /bin/bash#Program:#    在git上拉取最新分支,创建新的分支,替换资源文件,打包,删除分支#工程路径proj_dir=$1cd ${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#fiecho "**********************"echo "***开始build app文件***"echo "**********************"echo '------------- 清理xCode缓存 -----------'xcodebuild clean -configuration Releaseecho '------------- 清理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}.appecho '********************'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报错。目前我发现的问题基本就这些!还希望经验丰富的前辈们指教。
0 0
原创粉丝点击