美文网首页ios 组件化
iOS自动打包分发傻瓜式教程

iOS自动打包分发傻瓜式教程

作者: Gwanaak | 来源:发表于2020-09-05 15:53 被阅读0次

    所谓自动打包就是将繁琐的手动打包操作交给程序,一行命令实现自动打包上传。下面开始傻瓜式教程:

    一、安装RVM

    如果没有安装过rvm,需要安装rvm,在终端输入rvm -v命令查看,如果打印出rvm:command not found说明没有安装过rvm,如果能打印出rvm版本等信息说明安装过。如果没有安装过rvm可以通过下面的命安装,如果已经安装过可以忽略。

      在终端输入 curl -L get.rvm.io | bash -s stable ,然后稍等一会rvm就安装好了
      在终端输入 source ~/.bashrc
      在终端输入 source ~/.bash_profile
      再输入rvm -v查看安装成功
    

    问题:如果出现安装rvm过程中出现
    Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... failed错误
    不要慌,我们打开hosts文件加上:(不懂如何修改hosts,自行百度)

      199.232.28.133   raw.githubusercontent.com
    

    接着重新安装rvm就行了。

    二、如果要发布到fir,需要安装fir-cli
      sudo gem install fir-cli
    

    安装完登录

      fir login
    

    之后需要输入 APIToken 即可登录成功。
    APITokenfir 官网 应用管理页面,右上角用户下拉框中选择 APIToken 即可获取到。

    三、下载脚本文件或者拷贝下面脚本到文本,保存为.sh格式。

    下载地址:链接: https://pan.baidu.com/s/1KZICXTmskfNfs5wg7v0jYA 密码: fgif
    下面是完整脚本可直接复制:

    ####################   根据自己项目手动配置以下   ##################################
    #配置 账号密码和Tocken
    # 自己的AppleID账号密码
    AppleID="XXXXXX"
    AppleID_Password="XXXXXX"
    
    #fir Tocken
    fir_tocken = "XXXXXX"
    
    # 蒲公英userkey
    pgyerUserKey="XXXXXX"
    # 蒲公英apiKey
    pgyerApiKey="XXXXXX"
    
    
    #工程名 将XXX替换成自己的工程名
    project_name="XXXXXX"
    
    #scheme名 将XXX替换成自己的sheme名
    scheme_name="XXXXXX"
    
    #打包模式 Debug/Release
    development_mode="Debug"
    
    ####################   根据自己项目手动配置以上   ##################################
    
    #取当前时间字符串添加到文件结尾
    now=$(date +%Y-%m-%d-%H:%M)
    #当前工程绝对路径
    project_path=$(cd `dirname $0`; pwd)
    #生成的IPA文件存放路径
    project_path_pre="~/Desktop/IPA"
    #project_path_pre=../${project_path} //当前工程上一级目录
    
    #plist文件所在路径
    exportOptionsPlistPath=${project_path}/exportTest.plist
    
    #编译过程中产生的临时文件夹,build文件夹路径(等打包成功之后删除掉)
    tempBuild_path=${project_path}/build
    
    #build文件夹路径
    build_path=${project_path_pre}/build
    
    #导出.ipa文件所在路径
    exportIpaPath=~/Desktop/$project_name- 
    IPA/${project_name}${now}/${development_mode}
    #${project_path_pre}/IPADir/${development_mode}
    
    
    echo "Place enter the number you want to export ? [ 1:app-store 2:fir(adhoc) 3:蒲公英 
    (adhoc) 4:development] \n Please Enter Number: "
    
    ##
    read number
    while([[ $number != 1 ]] && [[ $number != 2 ]]  && [[ $number != 3 ]]  && [[ $number != 4 
    ]])
    do
    echo "Error! Should enter 1 or 2  or 3  or 4"
    echo "Place enter the number you want to export ? [ 1:app-store 2:fir 3:蒲公英 
    4:development] "
    read number
    done
    
    if [ $number == 1 ];then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportAppstore.plist
    exportIpaPath=~/Desktop/$project_name- 
    IPA/AppStore/${project_name}${now}/${development_mode}
    elif [ $number == 2 ];then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportAdhocRelease.plist
    exportIpaPath=~/Desktop/$project_name- 
    IPA/Adhoc/${project_name}${now}/${development_mode}
    elif [ $number == 3 ];then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportAdhocRelease.plist
    exportIpaPath=~/Desktop/$project_name- 
    IPA/Adhoc/${project_name}${now}/${development_mode}
    elif [ $number == 4 ];then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportTest.plist
    exportIpaPath=~/Desktop/$project_name- 
    IPA/Test/${project_name}${now}/${development_mode}
    fi
    
    
    
    echo '///-----------'
    echo '/// 正在清理工程'
    echo '///-----------'
    xcodebuild \
    clean -configuration ${development_mode} -quiet  || exit
    
    
    echo '///--------'
    echo '/// 清理完成'
    echo '///--------'
    echo ''
    
    echo '///-----------'
    echo '/// 正在编译工程:'${development_mode}
    echo '///-----------'
    xcodebuild archive \
    -project ${project_path}/${project_name}.xcodeproj \
    -scheme ${scheme_name} \
    -configuration ${development_mode} \
    -archivePath ${build_path}/${project_name}.xcarchive  -quiet  || exit
    
    echo '///--------'
    echo '/// 编译完成'
    echo '///--------'
    echo ''
    
    echo '///----------'
    echo '/// 开始ipa打包'
    echo '///----------'
    xcodebuild  \
    -allowProvisioningUpdates \
    -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/Xcode10.1.app/Contents/Applications/ApplicationLoader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
    "$altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u ${AppleID} -p ${AppleID_Password} -t ios --output-format xml
    "$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u ${AppleID} -p 
    ${AppleID_Password} -t ios --output-format xml
    
    echo "===发布完成==="
    elif [ $number == 2 ];then
    
    #上传到Fir
    echo "+++++上传到Fir平台+++++"
    # 将fir_tocken替换成自己的Fir平台的token
    fir login -T ${fir_tocken}
    fir publish $exportIpaPath/$scheme_name.ipa
    
    elif [ $number == 3 ];then
    #上传到蒲公英
    #执行上传至蒲公英的命令
    echo "+++++上传到蒲公英平台+++++"
    curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${pgyerUserKey}" -F"_api_key=${pgyerApiKey}" http://www.pgyer.com/apiv1/app/upload
    elif [ $number == 4 ];then
    
    # 将fir_tocken替换成自己的Fir平台的token
    fir login -T ${fir_tocken}
    fir publish $exportIpaPath/$scheme_name.ipa
    fi
    
    
    
    exit 0
    
    四、修改脚本里项目信息及拖入工程中
    1、将下载下来的三个plist文件及脚本.sh拖入工程目录 WeChatb82a180922cb8f248e65038e7dcbf3dd.png

    2、修改脚本文件的配置信息


    WeChat2956b36fd8b078cc1c4c2dd40fd20223.png

    3、修改刚拖入工程的那几个plist文件的teamID.(teamID哪里查看,自行百度哦)


    WeChat73180dfa18859a97f00c5528ce9c9b02.png
    五、运行脚本

    打开终端,cd到你的工程目录之下,执行命令

     sh /Users/macos/Desktop/xbullschool/shell.sh(直接把工程的sh文件拖到终端即可)
    

    回车、坐等打包完毕【可能会报错,不过问题不大】
    打包完毕可以在项目同级目录查看ipa包及fir下载二维码:如下


    WeChatdf51e13ab80ded833d5404784ad6415b.png

    问题:
    1、找不到xcodeproj
    如下图:如果你是pod管理则保留xcworkspace删掉xcodeproj这行代码,如果是只有xcodeproj就删掉xcworkspace那行代码


    WeChatb590848eab02695b0c97f9f1d54f9605.png

    2、找不到证书
    一般就是没有证书,创建一个就行了

    相关文章

      网友评论

        本文标题:iOS自动打包分发傻瓜式教程

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