IOS-命令行打包ipa

先看一下工程目录

然后是命令行代码
这里写图片描述
第一步cd空格把文件拖进去 最后会选择是否打测试包,等待就到桌面上了

ipa-build.sh

#!/bin/bash
#选择打包版本(Y:test环境)
echo -n "Do you want to test version?y/n" read isTest
CHANNELID=(appstore)
for ((i=0;i<${#CHANNELID[@]};i++))
do
#⼯工程绝对路径 project_path=$(pwd)
#编译的configuration,默认为Release build_config=Release
param_pattern=":nc:o:t:ws:"
OPTIND=2
while getopts $param_pattern optname
do
case "$optname" in
"n")
should_clean=y
;;
"c")
tmp_optind=$OPTIND
tmp_optname=$optname
tmp_optarg=$OPTARG
OPTIND=$OPTIND-1
if getopts $param_pattern optname ;then
echo  "Error argument value for option $tmp_optname"
exit 2
fi
OPTIND=$tmp_optind
build_config=$tmp_optarg
;;
"o")
tmp_optind=$OPTIND
tmp_optname=$optname
tmp_optarg=$OPTARG
OPTIND=$OPTIND-1
if getopts $param_pattern optname ;then
echo  "Error argument value for option $tmp_optname"
exit 2
fi
OPTIND=$tmp_optind
cd $tmp_optarg
output_path=$(pwd)
if [ ! -d $output_path ];then
echo "Error!The value of option o must be an exist directory."
exit 2
fi
;;
"w")
workspace_name='*.xcworkspace'
ls $project_path/$workspace_name &>/dev/null
rtnValue=$?
if [ $rtnValue = 0 ];then
build_workspace=$(echo $(basename $project_path/$workspace_name))
else
echo  "Error!Current path is not a xcode workspace.Please check, or
do not use -w option."
exit 2
fi
;;
"s")
tmp_optind=$OPTIND
tmp_optname=$optname
tmp_optarg=$OPTARG
OPTIND=$OPTIND-1
if getopts $param_pattern optname ;then
echo  "Error argument value for option $tmp_optname"
exit 2
fi
OPTIND=$tmp_optind
build_scheme=$tmp_optarg
;;
"t")
tmp_optind=$OPTIND
tmp_optname=$optname
tmp_optarg=$OPTARG
OPTIND=$OPTIND-1
if getopts $param_pattern optname ;then
echo  "Error argument value for option $tmp_optname"
exit 2
fi
OPTIND=$tmp_optind
build_target=$tmp_optarg
;;
"?")
echo "Error! Unknown option $OPTARG"
exit 2
;;
":")
echo "Error! No argument value for option $OPTARG"
exit 2
;;
*)
# Should not occur
echo "Error! Unknown error while processing options"
exit 2
;;
esac
done
#build⽂文件夹路径 build_path=${project_path}/build #⽣生成的app⽂文件⺫⽬目录 appdirname=Release-iphoneos
if [ $build_config = Debug ];then appdirname=Debug-iphoneos
fi
if [ $build_config = Distribute ];then appdirname=Distribute-iphoneos
fi #编译后⽂文件路径(仅当编译workspace时才会⽤用到) compiled_path=${build_path}/${appdirname}
#是否clean
if [ "$should_clean" = "y" ];then xcodebuild clean
fi
xcodebuild clean
#组合编译命令 build_cmd='xcodebuild'
if [ "$build_workspace" != "" ];then
#编译workspace
if [ "$build_scheme" = "" ];then
echo "Error! Must provide a scheme by -s option together when using -w option to compile a workspace."
exit 2 fi
build_cmd=${build_cmd}' -workspace '${build_workspace}' -scheme '$
{build_scheme}' -configuration '${build_config}'
CONFIGURATION_BUILD_DIR='${compiled_path}' ONLY_ACTIVE_ARCH=NO'
else
#编译project
build_cmd=${build_cmd}' -configuration '${build_config} if [ "$build_target" != "" ];then build_cmd=${build_cmd}' -target '${build_target}
fi
fi
#编译⼯工程
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" ];then
updateplist= $(/usr/libexec/PlistBuddy -c "set :Test_Version YES" $ {project_path}/BoXiu/BoXiu-Info.plist)
else
updateplist= $(/usr/libexec/PlistBuddy -c "set :Test_Version NO" $ {project_path}/BoXiu/BoXiu-Info.plist)
fi
$build_cmd || exit
#进⼊入build路径 cd $build_path
mkdir 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 || exit
cp ${build_path}/ipa-build/${ipa_name}.ipa ~/Desktop/${ipa_name}.ipa
rm -rf ${build_path}
cd $project_path
echo "Copy ipa file successfully to the path $output_path/$
{ipa_name}.ipa"
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app是一款基于Vue.js开发的跨平台应用框架,可以用于快速开发同时支持多个平台的应用程序。uni-app提供了一种打包离线app的方式,可以将应用程序打包原生的安装包,使得应用可以在手机上离线运行。 要打包离线app,首先需要在uni-app项目中进行相关配置。在项目的manifest.json文件中,可以设置app的名称、图标、启动页等信息。同时,还可以配置应用的权限、网络请求等。 接下来,需要选择目标平台进行打包。uni-app支持多个平台,包括iOS、Android、H5、微信小程序等。根据不同的平台,可以选择相应的打包方式。 对于iOS平台,可以使用HBuilderX进行打包。在HBuilderX中,选择菜单栏的“发行”-“原生App-云打包”,然后按照提示进行相关配置,最后生ipa文件即可。 对于Android平台,可以使用HBuilderX或者使用命令行进行打包。使用HBuilderX时,选择菜单栏的“发行”-“原生App-云打包”,然后按照提示进行相关配置,最后生apk文件即可。使用命令行时,需要安装好Android SDK,并配置好环境变量,然后使用命令行工具执行相应的打包命令。 对于H5平台,可以直接将项目打包一个静态网页,然后部署到服务器上即可。 对于微信小程序平台,可以使用HBuilderX进行打包。在HBuilderX中,选择菜单栏的“发行”-“小程序”,然后按照提示进行相关配置,最后生小程序的代码即可。 总结一下,uni-app提供了多种打包离线app的方式,可以根据不同的平台选择相应的打包方式进行配置和生安装包。通过这些步骤,就可以将uni-app项目打包离线app,使得应用可以在手机上离线运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值