命令行生成ipa经验总结
话说,大神都是用来膜拜的,只言片语,抛砖引玉。关键时刻还得靠自己去试错,下面把自己的试验结果给出,让大家少走弯路。
先说一下背景:
上一个项目,lbs,进度也不是很紧,xcode编译,拖拖拽拽生成ipa,测试、上传,倒不觉繁琐。来到新公司,oem好吧,一个项目要分别给十多个厂商做版,拖拖拽拽就晕倒了,无意看到xcodebuild 和xcrun的用法,试着用命令行又玩不转,于是放下。最近实在受不了拖拖拽拽的生活了,发狠给写了个脚本,然后,整个世界清净了。
说说下面的脚本:
生成ipa的前两个脚本,需要进入.xcodeproj那个目录中执行。
其中,factory,appName,version这些变量在另一个脚本中定义,方便调用。
第一个脚本是用来生成测试ipa和上传ipa的,第二个脚本是用来生成测试ipa的,第三个脚本是用来删除.svn文件的,主要用于版本控制了。需要的童鞋拿去改改就行了。
#!/bin/sh
target="Power7 MobileView"
distDir="/Users/tuchangwei/Documents/WorkSpace/Release/${factory}/${appName}_V${version}"
rm -rdf "$distDir"
mkdir "$distDir"
uploadDir="${distDir}/Upload AppStore"
rm -rdf "$uploadDir"
mkdir "$uploadDir"
/usr/bin/xcodebuild -target "$target" clean
echo "******************start build*********************"
/usr/bin/xcodebuild -target "$target" CODE_SIGN_IDENTITY="$distribution"
echo "******************start pick .ipa*********************"
/usr/bin/xcrun -sdk iphoneos PackageApplication -v build/Release-iphoneos/*.app -o "${uploadDir}/${appName}.ipa" --sign "$distribution"
echo "******************start pick test .ipa*********************"
codesign -f --sign "iPhone Developer: Nelson Chen (JPMGJWJFAQ)" build/Release-iphoneos/*.app
/usr/bin/xcrun -sdk iphoneos PackageApplication -v build/Release-iphoneos/*.app -o "${distDir}/${appName}_V${version}.ipa" --sign "iPhone Developer: Nelson Chen (JPMGJWJFAQ)" --embed "/Users/tuchangwei/Library/MobileDevice/Provisioning Profiles/D788EEA0-848E-4F5E-AA30-87D38154DA9B.mobileprovision"
#!/bin/sh
target="Power7 MobileView"
distDir="/Users/tuchangwei/Desktop/Test"
rm -rdf "$distDir"
mkdir "$distDir"
/usr/bin/xcodebuild -target "$target" clean
echo "******************start build*********************"
/usr/bin/xcodebuild -target "$target"
echo "******************start pick test .ipa*********************"
codesign -f --sign "iPhone Developer: Nelson Chen (JPMGJWJFAQ)" build/Release-iphoneos/*.app
/usr/bin/xcrun -sdk iphoneos PackageApplication -v build/Release-iphoneos/*.app -o "${distDir}/test.ipa" --sign "iPhone Developer: Nelson Chen (JPMGJWJFAQ)" --embed "/Users/tuchangwei/Library/MobileDevice/Provisioning Profiles/D788EEA0-848E-4F5E-AA30-87D38154DA9B.mobileprovision"
#!/bin/sh
echo "start delete .svn..."
find $PWD/ -name .svn -print0 | xargs -0 rm -rf
echo "finish delete .svn."