美文网首页
iOS 几种打包方式

iOS 几种打包方式

作者: y夜无眠 | 来源:发表于2021-10-20 11:46 被阅读0次
    1. 最常用的Xcode中的Product->Archive的方法;
    2. 压缩Playload方式打包:

    1.自己在Xcode配置好项目的签名;
    2.用Generic iOS Device来build工程;
    3.找到生成的.app包,然后新建一个名为Payload的文件夹,将.app包放到文件夹里面;
    4.压缩Payload文件夹,然后将压缩包的后缀从.zip改成.ipa;
    然后就可以将ipa包安装到手机上测试了...


    image.png
    image.png
    3. 利用脚本自动打包
    • 使用方法

    1.将脚本复制到工程的根目录;
    2.用代码编辑软件(比如Xcode)打开脚本,然后根据情况修改脚本内的一些参数;
    3.打开终端,输入 ./shell.sh 就可执行打包脚本。


    脚本文件

    其中 exportTest.plist 可以用如下方式生成:

    直接使用Xcode打包, 然后直接导出 ipa 包, 得到 ExportOptions.plist 文件:


    ExportOptions.plist文件

    建议不管是手动管理证书还是自动管理证书都先使用Xcode打包, 之后直接导出或者copy一份里面的ExportOptions.plist文件之后再改下名字改成exportTest.plist即可!

    • 一般出错的话都是由于plist文件里面证书配置有问题,所以还是建议使用XCode自动生成的
    • exportTest.plist 内容如下:
    exportTest.plist文件内容
    • shell.sh 内容如下:
    #使用方法
    
    #当前工程绝对路径
    project_path=$(cd `dirname $0`; pwd)
    #生成的IPA文件存放路径
    project_path_pre=~/Desktop/IPAFiles
    #project_path_pre=../${project_path} //当前工程上一级目录
    
    #工程名 将xxx替换成自己的工程名
    project_name=xxx
    
    #scheme名 将xxx替换成自己的sheme名
    scheme_name=xxx
    
    #打包模式 Debug/Release
    development_mode=Debug
    
    #plist文件所在路径
    exportOptionsPlistPath=${project_path}/exportTest.plist
    
    #编译过程中产生的临时文件夹,build文件夹路径(等打包成功之后删除掉)
    tempBuild_path=${project_path}/build
    
    #build文件夹路径
    build_path=${project_path_pre}/build
    
    #导出.ipa文件所在路径
    exportIpaPath=${project_path_pre}/IPADir/${development_mode}
    
    
    echo "Place enter the number you want to export ? [ 1:app-store 2:development] "
    
    ##
    read number
    while([[ $number != 1 ]] && [[ $number != 2 ]])
    do
    echo "Error! Should enter 1 or 2"
    echo "Place enter the number you want to export ? [ 1:app-store 2:development] "
    read number
    done
    
    if [ $number == 1 ];then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportAppstore.plist
    else
    development_mode=Debug
    exportOptionsPlistPath=${project_path}/exportTest.plist
    fi
    
    
    echo '///-----------'
    echo '/// 正在清理工程'
    echo '///-----------'
    xcodebuild \
    clean -configuration ${development_mode} -quiet  || exit
    
    
    echo '///--------'
    echo '/// 清理完成'
    echo '///--------'
    echo ''
    
    echo '///-----------'
    echo '/// 正在编译工程:'${development_mode}
    echo '///-----------'
    xcodebuild \
    archive -workspace ${project_path}/${project_name}.xcworkspace \
    -scheme ${scheme_name} \
    -configuration ${development_mode} \
    -archivePath ${build_path}/${project_name}.xcarchive  -quiet  || exit
    
    echo '///--------'
    echo '/// 编译完成'
    echo '///--------'
    echo ''
    
    echo '///----------'
    echo '/// 开始ipa打包'
    echo '///----------'
    xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
    -configuration ${development_mode} \
    -exportPath ${exportIpaPath} \
    -exportOptionsPlist ${exportOptionsPlistPath} \
    -quiet || exit
    
    if [ -e $exportIpaPath/$scheme_name.ipa ]; then
    echo '///----------'
    echo '/// ipa包已导出'
    echo '///----------'
    open $exportIpaPath
    rm -r $tempBuild_path
    else
    echo '///-------------'
    echo '/// ipa包导出失败 '
    echo '///-------------'
    fi
    echo '///------------'
    echo '/// 打包ipa完成  '
    echo '///-----------='
    echo ''
    
    echo '///-------------'
    echo '/// 开始发布ipa包 '
    echo '///-------------'
    
    if [ $number == 1 ];then
    
    #验证并上传到App Store
    # 将-u 后面的xxx替换成自己的AppleID的账号,-p后面的xxx替换成自己的密码
    altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
    "$altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u xxx -p xxx -t ios --output-format xml
    "$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u  xxx -p xxx -t ios --output-format xml
    else
    
    #上传到Fir
    #echo "+++++上传到Fir平台+++++"
    # 将XXX替换成自己的Fir平台的token
    #fir login -T XXX
    #fir publish $exportIpaPath/$scheme_name.ipa
    
    
    #上传到蒲公英
    #将xxx替换成自己蒲公英上的User Key
    uKey="xxx"
    #将XXX替换成自己蒲公英上的API Key
    apiKey="xxx"
    #执行上传至蒲公英的命令
    echo "+++++上传到蒲公英平台+++++"
    curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload
    
    
    fi
    
    exit 0
    

    参考:
    iOS Shell自动化打包发布
    iOS 分享一个ipa打包脚本
    打包时遇到的异常以及解决方法
    github上最新的脚本文件

    用Jenkins搭建打包参考:搭建iOS自动化打包平台(利用Jenkins持续集成iOS项目)

    相关文章

      网友评论

          本文标题:iOS 几种打包方式

          本文链接:https://www.haomeiwen.com/subject/yfhtaltx.html