理想的情况:不打开工程的情况下,直接双击就能打包出一个IPA文件,这样就可以让测试直接使用 itools 进行安装。
分如下两种情况:
1)不依赖cocoapod 管理项目的自动化。
如果没有一个简单的工程,也没有太多三方库依赖的时候,这种基本能满足开发需求了。
shell 脚本(xxx.command 结尾)如下:(这里是哪里提供的地址,本人已经忘记了! sorry)
###########Copy Start############
# CD 定到指定的工程
cd ~/Desktop
cd "WorkSpace201601/kuaihuoyunWorkspace/kuaidihuoyun"
#工程绝对路径
#cd $1
project_path=$(pwd)
#build文件夹路径
build_path=${project_path}/build
#工程配置文件路径
project_name=$(ls | grep xcodeproj | awk -F.xcodeproj '{print $1}')
project_infoplist_path=${project_path}/${project_name}/${project_name}-Info.plist
#取版本号
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${project_infoplist_path})
#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" ${project_infoplist_path})
#取bundle Identifier前缀
bundlePrefix=$(/usr/libexec/PlistBuddy -c "print CFBundleIdentifier" `find . -name "*-Info.plist"` | awk -F$ '{print $1}')
cd $project_path
echo clean start ...
#删除bulid目录
if [ -d ${build_path} ];then
rm -rf ${build_path}
echo clean build_path success.
fi
#清理工程
xcodebuild clean || exit
#去掉xcode源码末尾的空格
#find . -name "*.[hm]" | xargs sed -Ee 's/ +$//g' -i ""
#编译工程
xcodebuild -configuration Release -workspace ${project_path}/${project_name}.xcworkspace \
-scheme ${project_name} \
ONLY_ACTIVE_ARCH=NO \
TARGETED_DEVICE_FAMILY=1 \
DEPLOYMENT_LOCATION=YES CONFIGURATION_BUILD_DIR=${project_path}/build/Release-iphoneos || exit
if [ -d ./ipa-build ];then
rm -rf ipa-build
fi
#打包
cd $build_path
mkdir -p ipa-build/Payload
cp -r ./Release-iphoneos/*.app ./ipa-build/Payload/
cd ipa-build
zip -r ${project_name}.ipa *
echo ${build_path}/ipa-build/${project_name}.ipa
#找到桌面路径
cd ~/Desktop
#echo Desktop dir
#echo $(pwd)
#拷贝文件
cp -r ${build_path}/ipa-build/${project_name}.ipa $(pwd)
#清空bulid目录
cd ${build_path}/ipa-build
rm -rf Payload
if [ -d ${build_path} ];then
rm -rf ${build_path}
fi
###########Copy END############
2)不使用cocoapod 项目 方法二
博客地址:http://blog.csdn.net/showhilllee/article/details/47001181
第一步:
初始化xcode 命令行工具
在终端上执行 :xcode-select --install
第二步:
制作以下脚本(xxx.command)
project_path=$1
target_name=$2
cd $project_path
/usr/bin/xcodebuild -target $target_name clean #清空工程命令
/usr/bin/xcodebuild -target $target_name #编译工程命令
#将APP转为IPA :
/usr/bin/xcrun -sdk iphoneos PackageApplication -v 源app绝对路径 -o 目标ipa文件绝对路径
/usr/bin/xcrun -sdk iphoneos PackageApplication -v ./build/Release-iphoneos/$target_name.app -o $project_path/$target_name.ipa
3)使用cocoapod 管理项目时
我自己的项目是使用cocoapod 进行项目管理的。
项目中使用存在如下关系
A、自定义动态库(网络层),直接进行工程依赖配置
B、自定义工具类库,使用cocoapods 生成自定义cocoapod 本地库,然后进行引用。
C、cocoapods 三方库。
由于上面的关系比较复杂,因此直接使用Xcodebuild 是无法直接编译出来的。 因此我放弃了直接一键打包的思路。
只好想到直接将手动打好的APP 文件转化为IPA:
/usr/bin/xcrun -sdk iphoneos PackageApplication -v 源app绝对路径 -o 目标ipa文件绝对路径
最后希望自己有一天可以找到,使用pod项目的 一键打包方式。