700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > IOS-命令行打包ipa

IOS-命令行打包ipa

时间:2021-11-29 13:34:16

相关推荐

IOS-命令行打包ipa

先看一下工程目录

然后是命令行代码

第一步cd空格把文件拖进去 最后会选择是否打测试包,等待就到桌面上了

ipa-build.sh

#!/bin/bash#选择打包版本(Y:test环境)echo -n "Do you want to test version?y/n" read isTestCHANNELID=(appstore)for ((i=0;i<${#CHANNELID[@]};i++))do#⼯工程绝对路径 project_path=$(pwd)#编译的configuration,默认为Release build_config=Releaseparam_pattern=":nc:o:t:ws:"OPTIND=2while getopts $param_pattern optnamedocase "$optname" in"n")should_clean=y;;"c")tmp_optind=$OPTINDtmp_optname=$optnametmp_optarg=$OPTARGOPTIND=$OPTIND-1if getopts $param_pattern optname ;thenecho "Error argument value for option $tmp_optname"exit 2fiOPTIND=$tmp_optindbuild_config=$tmp_optarg;;"o")tmp_optind=$OPTINDtmp_optname=$optnametmp_optarg=$OPTARGOPTIND=$OPTIND-1if getopts $param_pattern optname ;thenecho "Error argument value for option $tmp_optname"exit 2fiOPTIND=$tmp_optindcd $tmp_optargoutput_path=$(pwd)if [ ! -d $output_path ];thenecho "Error!The value of option o must be an exist directory."exit 2fi;;"w")workspace_name='*.xcworkspace'ls $project_path/$workspace_name &>/dev/nullrtnValue=$?if [ $rtnValue = 0 ];thenbuild_workspace=$(echo $(basename $project_path/$workspace_name))elseecho "Error!Current path is not a xcode workspace.Please check, ordo not use -w option."exit 2fi;;"s")tmp_optind=$OPTINDtmp_optname=$optnametmp_optarg=$OPTARGOPTIND=$OPTIND-1if getopts $param_pattern optname ;thenecho "Error argument value for option $tmp_optname"exit 2fiOPTIND=$tmp_optindbuild_scheme=$tmp_optarg;;"t")tmp_optind=$OPTINDtmp_optname=$optnametmp_optarg=$OPTARGOPTIND=$OPTIND-1if getopts $param_pattern optname ;thenecho "Error argument value for option $tmp_optname"exit 2fiOPTIND=$tmp_optindbuild_target=$tmp_optarg;;"?")echo "Error! Unknown option $OPTARG"exit 2;;":")echo "Error! No argument value for option $OPTARG"exit 2;;*)# Should not occurecho "Error! Unknown error while processing options"exit 2;;esacdone#build⽂文件夹路径 build_path=${project_path}/build #⽣生成的app⽂文件⺫⽬目录 appdirname=Release-iphoneosif [ $build_config = Debug ];then appdirname=Debug-iphoneosfiif [ $build_config = Distribute ];then appdirname=Distribute-iphoneosfi #编译后⽂文件路径(仅当编译workspace时才会⽤用到) compiled_path=${build_path}/${appdirname}#是否cleanif [ "$should_clean" = "y" ];then xcodebuild cleanfixcodebuild clean#组合编译命令 build_cmd='xcodebuild'if [ "$build_workspace" != "" ];then#编译workspaceif [ "$build_scheme" = "" ];thenecho "Error! Must provide a scheme by -s option together when using -w option to compile a workspace."exit 2 fibuild_cmd=${build_cmd}' -workspace '${build_workspace}' -scheme '${build_scheme}' -configuration '${build_config}'CONFIGURATION_BUILD_DIR='${compiled_path}' ONLY_ACTIVE_ARCH=NO'else#编译projectbuild_cmd=${build_cmd}' -configuration '${build_config} if [ "$build_target" != "" ];then build_cmd=${build_cmd}' -target '${build_target}fifi#编译⼯工程cd $project_path#app⽂文件名称appname=$(basename ./${appdirname}/*.app)#app⽂文件中Info.plist⽂文件路径 app_infoplist_path=${build_path}/${appdirname}/${appname}/Info.plist#更新项⺫⽬目plist⽂文件updateplist= $(/usr/libexec/PlistBuddy -c "set :channelid $ {CHANNELID[$i]}" ${project_path}/BoXiu/BoXiu-Info.plist)if [ "$isTest" = "y" ];thenupdateplist= $(/usr/libexec/PlistBuddy -c "set :Test_Version YES" $ {project_path}/BoXiu/BoXiu-Info.plist)elseupdateplist= $(/usr/libexec/PlistBuddy -c "set :Test_Version NO" $ {project_path}/BoXiu/BoXiu-Info.plist)fi$build_cmd || exit#进⼊入build路径 cd $build_pathmkdir ipa-build#取版本号bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" ${app_infoplist_path})#取build值bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" $ {app_infoplist_path})#通过app⽂文件名获得⼯工程target名字target_name=$(echo $appname | awk -F. '{print $1}')#IPA名称 #ipa_name="${target_name}_${bundleShortVersion}_${build_config}$ {bundleVersion}_$(date +"%Y%m%d")" #ipa_name="${bundleShortVersion}_${build_config}${bundleVersion}_$ {CHANNELID[$i]}" ipa_name="${build_config}${bundleVersion}_${CHANNELID[$i]}"#xcrun打包xcrun -sdk iphoneos PackageApplication -v ./${appdirname}/*.app -o $ {build_path}/ipa-build/${ipa_name}.ipa || exitcp ${build_path}/ipa-build/${ipa_name}.ipa ~/Desktop/${ipa_name}.iparm -rf ${build_path}cd $project_pathecho "Copy ipa file successfully to the path $output_path/${ipa_name}.ipa"done

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。