自动打包的前提:至少手动打包过一次,因为会关系到第二步(我是这么操作的)
第一步 在项目目录下创建 自动打包.sh 文件 (自动打包 这个名字可以自己取)
cd *项目文件*
touch 自动打包.sh
复制下面到 自动打包.sh,修改下面的project_name、scheme、development_mode、uKey、_api_key
特别注意,是否使用了CocoaPods,查看下面的代码块中的 特别注意
#使用方法
if [ ! -d ./IPADir ];
then
mkdir -p IPADir;
fi
#工程绝对路径
project_path=$(cd `dirname $0`; pwd)
#工程名
project_name="******"
#scheme名,同上
scheme_name="*****"
#打包模式 Debug/Release
development_mode= Release
#build文件夹路径
build_path=${project_path}/build
#plist文件所在路径
exportOptionsPlistPath=${project_path}/exportTest.plist
#导出.ipa文件所在路径
exportIpaPath=${project_path}/IPADir/${development_mode}
#应用安装包文件的路径
filePath=${project_path}/IPADir/${project_name}.ipa
echo '正在清理工程'
xcodebuild clean -configuration ${development_mode} -quiet || exit
echo '清理完成'
echo '正在编译工程:'${development_mode}
#### 特别注意
#打包的工程文件分两种(是否包含cocoapods):project和workspace,如果需要打包的是project,则在archive中将-workspace替换为-project,将.xcworkspace的路径替换为.xcodeproj的路径
#archive -workspace ${project_name}.xcworkspace
#archive -project ${project_name}.xcodeproj
xcodebuild archive -archivePath ${build_path}/${project_name}.xcarchive -workspace ${project_name}.xcworkspace -scheme ${scheme_name} -configuration ${development_mode} -quiet || exit
echo '编译完成'
echo '开始ipa打包'
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive -exportPath ${exportIpaPath} -exportOptionsPlist ${exportOptionsPlistPath} -configuration ${development_mode} -quiet || exit
if [ -e $exportIpaPath/$scheme_name.ipa ]; then
echo 'ipa包已导出'
open $exportIpaPath
else
echo 'ipa包导出失败 '
fi
echo '打包ipa完成 '
echo '开始上传到蒲公英'
#https://www.pgyer.com/doc/view/upload_one_command 查找uKey和_api_key
curl -F "file=@$filePath" \
-F "uKey=********" \
-F "_api_key=********" \
https://www.pgyer.com/apiv1/app/upload
echo '上传完成'
第二步 exportTest.plist 文件
如果打包过,在Xcode->Window->organizer->项目->app store / ad-hoc ->下载到本地->打开文件夹->ExportOptions.plist->改名为 exportTest.plist
第三步
1. 把exportTest.plist和自动打包.sh 一起放在项目目录下
2. cd 项目目录
3. chmode +x 自动打包.sh
4. ./自动打包.sh
注意:每次重新进行4时,在项目目录下如果有通过 自动打包.sh 创建的build文件夹,要先把的build文件夹删除
自己遇到的问题
xcodebuild[47029:2402102] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/vs/n9h9vgh55xq1hmfry3n0_p9c0000gn/T/Chainup_2020-02-16_14-40-08.682.xcdistributionlogs'.
error: exportArchive: The data couldn’t be read because it isn’t in the correct format.
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value., NSFilePath=/var/folders/vs/n9h9vgh55xq1hmfry3n0_p9c0000gn/T/ipatool-json-filepath-~~~SRY1mT}
** EXPORT FAILED **
解决:
1、把xcode上的BitCode关闭,设置成No即可,project和targets里面对应的BitCode都需要关闭,
2、把第二步exportTest.plist中compileBitcode 的value由 true改成 false
如