├── DevelopmentExportOptionsPlist.plist ├── README.md └── xcodebuild.sh /DevelopmentExportOptionsPlist.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | method 6 | enterprise 7 | 8 | 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XcodeAutoBuild 2 | iOS自动打包脚本制作 3 | 4 | 在工程根目录下新建两个文件 5 | 6 | 7 | ![项目文件夹](http://upload-images.jianshu.io/upload_images/953487-f6eae1d35daa4135.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 8 | 9 | 10 | `DevelopmentExportOptionsPlist.plist`用来指定打包的类型,`xcodebuild.sh`是打包执行的`shell`脚本文件。 11 | 12 | 13 | ![DevelopmentExportOptionsPlist.plist 文件内容](http://upload-images.jianshu.io/upload_images/953487-c1e9af9e286e5f28.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 14 | 15 | method的类型为`String`,用来指定打包`ipa`的类型,有以下可选项`app-store、enterprise、ad-hoc、development`,默认为`development` 16 | 17 | 18 | `xcodebuild.sh`文件中包括一些需要配置的参数,`工程名project_name、打包模式development_mode、scheme名scheme_name`。 19 | 20 | 打包的工程文件分两种(是否包含cocoapods):`project`和`workspace`,如果需要打包的是`project`,则在`archieve`中将`-workspace`替换为`-project`,将`.xcworkspace`的路径替换为`.xcodeproj`的路径 21 | 22 | ``` 23 | #工程名(自定义) 24 | project_name=eHRmobile 25 | 26 | #打包模式 Debug/Release(自定义) 27 | development_mode=Release 28 | 29 | #scheme名(自定义,一般与工程名相同) 30 | scheme_name=eHRmobile 31 | 32 | #plist文件所在路径 33 | exportOptionsPlistPath=./DevelopmentExportOptionsPlist.plist 34 | 35 | #导出.ipa文件所在路径 36 | exportFilePath=~/Desktop/$project_name-ipa 37 | 38 | echo '*** 正在 清理工程 ***' 39 | xcodebuild \ 40 | clean -configuration ${development_mode} -quiet || exit 41 | echo '*** 清理完成 ***' 42 | 43 | 44 | echo '*** 正在 编译工程 For '${development_mode} 45 | xcodebuild \ 46 | archive -workspace ${project_name}.xcworkspace \ 47 | -scheme ${scheme_name} \ 48 | -configuration ${development_mode} \ 49 | -archivePath build/${project_name}.xcarchive -quiet || exit 50 | echo '*** 编译完成 ***' 51 | 52 | 53 | echo '*** 正在 打包 ***' 54 | xcodebuild -exportArchive -archivePath build/${project_name}.xcarchive \ 55 | -configuration ${development_mode} \ 56 | -exportPath ${exportFilePath} \ 57 | -exportOptionsPlist ${exportOptionsPlistPath} \ 58 | -quiet || exit 59 | 60 | # 删除build包 61 | if [[ -d build ]]; then 62 | rm -rf build -r 63 | fi 64 | 65 | if [ -e $exportFilePath/$scheme_name.ipa ]; then 66 | echo "*** .ipa文件已导出 ***" 67 | cd ${exportFilePath} 68 | echo "*** 开始上传.ipa文件 ***" 69 | #此处上传分发应用 70 | echo "*** .ipa文件上传成功 ***" 71 | else 72 | echo "*** 创建.ipa文件失败 ***" 73 | fi 74 | echo '*** 打包完成 ***' 75 | 76 | ``` 77 | 78 | 自动打包(需在项目中配置好描述文件、开发者证书) 79 | 使用方式: 80 | 在终端中进入`*.xcodeproj`上级目录 81 | 输入`./xcodebuild.sh`即可自动打包、如无执行权限则先执行`chmod +x xcodebuild.sh` 82 | 83 | 最后会在桌面上生成打包完成的ipa文件夹。 84 | 85 | 86 | ------- 87 | 参考文章: 88 | 89 | [iOS 制作自动打包脚本 Xcode8.3.2](http://www.cnblogs.com/ficow/p/6823962.html) 90 | [自动打包脚本](https://github.com/PurpleSweetPotatoes/AutoBuild-ipa) 91 | 92 | 93 | -------------------------------------------------------------------------------- /xcodebuild.sh: -------------------------------------------------------------------------------- 1 | #工程名 2 | project_name=eHRmobile 3 | 4 | #打包模式 Debug/Release 5 | development_mode=Release 6 | 7 | #scheme名 8 | scheme_name=eHRmobile 9 | 10 | #plist文件所在路径 11 | exportOptionsPlistPath=./DevelopmentExportOptionsPlist.plist 12 | 13 | #导出.ipa文件所在路径 14 | exportFilePath=~/Desktop/$project_name-ipa 15 | 16 | echo '*** 正在 清理工程 ***' 17 | xcodebuild \ 18 | clean -configuration ${development_mode} -quiet || exit 19 | echo '*** 清理完成 ***' 20 | 21 | 22 | echo '*** 正在 编译工程 For '${development_mode} 23 | xcodebuild \ 24 | archive -project ${project_name}.xcodeproj \ 25 | -scheme ${scheme_name} \ 26 | -configuration ${development_mode} \ 27 | -archivePath build/${project_name}.xcarchive -quiet || exit 28 | echo '*** 编译完成 ***' 29 | 30 | 31 | echo '*** 正在 打包 ***' 32 | xcodebuild -exportArchive -archivePath build/${project_name}.xcarchive \ 33 | -configuration ${development_mode} \ 34 | -exportPath ${exportFilePath} \ 35 | -exportOptionsPlist ${exportOptionsPlistPath} \ 36 | -quiet || exit 37 | 38 | # 删除build包 39 | if [[ -d build ]]; then 40 | rm -rf build -r 41 | fi 42 | 43 | if [ -e $exportFilePath/$scheme_name.ipa ]; then 44 | echo "*** .ipa文件已导出 ***" 45 | cd ${exportFilePath} 46 | echo "*** 开始上传.ipa文件 ***" 47 | #此处上传分发应用 48 | echo "*** .ipa文件上传成功 ***" 49 | else 50 | echo "*** 创建.ipa文件失败 ***" 51 | fi 52 | echo '*** 打包完成 ***' 53 | 54 | --------------------------------------------------------------------------------