ios自动化打包

来源:互联网 发布:大象vs鳄鱼 知乎 编辑:程序博客网 时间:2024/04/29 09:55

每次打包都用图形界面,一方面容易出错,另一方面操作太繁琐,对于一些没有用过xcode的测试人员,打包更是让人头疼,利用shell脚本自动化打包就能解决这些问题,提高打包效率。下面是我在网上查阅相关资料最后形成的shell脚本,可以参考。

[plain] view plaincopy
  1. #工程绝对路径  
  2. project_path=$(pwd)  
  3.   
  4. #build文件夹路径  
  5. build_path=${project_path}/build  
  6.   
  7. #工程配置文件路径  
  8. project_name=$(ls | grep xcodeproj | awk -F.xcodeproj '{print $1}')  
  9.   
  10. project_infoplist_path=${project_path}/${project_name}/${project_name}-Info.plist  
  11.   
  12. $(/usr/libexec/PlistBuddy -c "Set:CFBundleIdentifier com.xxx.xxxx" ${project_infoplist_path})  
  13. $(/usr/libexec/PlistBuddy -c "Set:CFBundleVersion 2.0" ${project_infoplist_path})  
[plain] view plaincopy
  1. <p class="p1">$(/usr/libexec/PlistBuddy -c <span class="s1">"Set:CFBundleShortVersionString 2.0"</span>  ${project_infoplist_path})</p>  
[plain] view plaincopy
  1. cd $project_path  
  2. echo clean start ...  
  3. #删除bulid目录  
  4. if  [ -d ${build_path} ];then  
  5. rm -rf ${build_path}  
  6. echo clean build_path success.  
  7. fi  
  8. #清理工程  
  9. xcodebuild clean || exit  
  10.   
  11. #编译工程  
  12. #XCODEUUID=`defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`  
  13. #for f in ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/*;  
  14. #do defaults write "$f/Contents/Info" DVTPlugInCompatibilityUUIDs -array-add $XCODEUUID;  
  15. #done  
  16. echo $project_path  
  17. targetName=$project_name  
  18. xcodebuild -target "$targetName" -xcconfig xxx.xcconfig build  
  19.   
  20.   
  21. if [ -d ./ipa-build ];then  
  22. rm -rf ipa-build  
  23. fi  
  24. #打包  
  25. cd $build_path  
  26. mkdir -p ipa-build/Payload  
  27. cp -r ./Release-iphoneos/*.app ./ipa-build/Payload/  
  28. cd ipa-build  
  29. zip -r ${project_name}.ipa *  
  30.   
  31. echo ${build_path}/ipa-build/${project_name}.ipa  
  32. #找到桌面路径  
  33. cd $project_path  
  34. #拷贝文件  
  35. cp -r ${build_path}/ipa-build/${project_name}.ipa  $(pwd)  
  36. #清空bulid目录  
  37. cd ${build_path}/ipa-build  
  38. rm -rf Payload  
  39. if  [ -d ${build_path} ];then  
  40. rm -rf ${build_path}  
  41. fi  

上面的脚本需要强调下面几点:

1.其中的PlistBuddy工具,需要设置PATH环境变量export PATH=/usr/libexec:$PATH,注意这样设置后只能保证在当前不关闭的命令窗口中有效,在新打开命令行窗口得重新设置。通过PlistBuddy可以更改xxx-info.plist中的内容,如版本号,identifier等。

2.运行上面的脚本可能还会遇到下面这样的错误提示

PluginLoading: Required plug-in compatibility UUID C4A681B0-4A26-480E-93EC-1218098B9AA0 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/VVDocumenter-Xcode.xcplugin' not present in DVTPlugInCompatibilityUUIDs

解决这个可以用shell命令行

#XCODEUUID=`defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`

#for f in ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/*;

#do defaults write "$f/Contents/Info" DVTPlugInCompatibilityUUIDs -array-add $XCODEUUID;

#done

或者切换到~/Library/Application Support/Developer/Shared/Xcode/Plug-ins目录下,修改其中的info.plist文件将提示中的UUID值添加到DVTPlugInCompatibilityUUIDs中。

3.其中的xxx.xcconfig配置文件,这个文件中的内容等价于工程的build-setting设置,具体怎么填写可以参见工程的xxx..pbxproj的文件内容,或者到工程的build-setting中copy,然后再paste到xcconfig文件中。

一般常见的配置有

PRODUCT_NAME = 

INFOPLIST_FILE = 

PROVISIONING_PROFILE = 

PROVISIONING_PROFILE[sdk=iphoneos*] = 

CODE_SIGN_IDENTITY =

CODE_SIGN_IDENTITY[sdk=iphoneos*] = 


本文参考的文章见:

http://www.cnblogs.com/tangbinblog/p/3783410.html

http://blog.sina.com.cn/s/blog_7011f21c0101bkgr.html

http://blog.csdn.net/linfei2707/article/details/7100514

http://blog.csdn.net/yu0089/article/details/8182128

版权声明:本文为博主原创文章,未经博主允许不得转载。

0 0
原创粉丝点击