由于自己所在公司是做生成平台的所以app自动打包是必要的而xcode和commandlinetools确实也提供了这样的功能,在没有使用pods的时候build一个project很简单,但是引入pods项目后,在build workspace的时候就出现了这样或者那样的问题了,其根本原因还是参数的问题
先贴一段脚本:
#! /bin/bash
proj_dir=$1
cd ${proj_dir}
echo "**********************"
echo "***开始build app文件***"
echo "**********************"
echo '------------- 清理xCode缓存 -----------'
xcodebuild clean -configuration Release
echo '------------- 清理xCode缓存完毕 -----------'
mecho '------------- 开始build项目代码 -----------'
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项目代码完毕 -----------'
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报错。
目前我发现的问题基本就这些!还希望经验丰富的前辈们指教。