美文网首页
iOS自动化打包到Appstore

iOS自动化打包到Appstore

作者: 含笑州 | 来源:发表于2020-01-02 14:50 被阅读0次

    一、实现

    1.在项目根目录下创建个文件夹,然后在里面添加两个文件夹,如下图所示:

    2.exportAppstore.plist中配置如下:

    左边为bundle id名,右边为provisioning profile的文件名

    3.shell.sh中脚本内容如下:

    #日期与时间

    currentDate=`date +%Y-%m-%d,%T`

    #工程绝对路径

    project_path=$(cd.. $(dirname ${BASH_SOURCE[0]});pwd)

    #工程名 将XXXX替换成自己的工程名

    project_name=XXXX

    #scheme名 将XXX替换成自己的sheme名

    scheme_name=XXXX

    #打包模式 Release

    development_mode=Release

    ##########检查code signing identity是否正确

    #将gringotts的更改为自己项目名

    projFilePath=`find $project_path -name "XXXX(替换成自己的项目名).xcodeproj" -type d`

    #echo projFilePath = $projFilePath

    ##########检查archive 的build configuration是否正确

    projNameTmp=${projFilePath##*\/}

    projName=${projNameTmp%.*}

    echoprojName=$projName

    #plist文件所在路径

    profFolderPath=${projFilePath%/*}

    cd"$profFolderPath"

    exportOptionsPlistPath=$profFolderPath/appstoreArchive/exportAppstore.plist

    #build文件夹路径

    build_path="$HOME/Desktop/$project_name"_appstore_"$currentDate"

    #导出.ipa文件所在路径

    exportIpaPath="$HOME/Desktop/$project_name"_appstore_"$currentDate"

    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

        else

        echo '///-------------'

        echo '/// ipa包导出失败 '

        echo '///-------------'

    fi

    echo '///------------'

    echo '/// 打包ipa完成  '

    echo '///-----------='

    echo ''

    echo '///-------------'

    echo '/// 开始验证ipa包 '

    echo '///-------------'

    #验证并上传到App Store

    #因为xcode11中删掉了Application Loader,需要换一种方法

    xcrun altool --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -t ios --apiKey xxxx --apiIssuer xxxx --verbose

    echo '///-------------'

    echo '/// 开始发布ipa包 '

    echo '///-------------'

    xcrun altool --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -t ios --apiKey xxxx --apiIssuer xxxx --verbose

    echo "\n\n"

    echo "已运行完毕>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"

    exit 0

    4.获取apikey 和Issuer ID,操作如下:

    apiKey 即密钥ID

    apiIssuer 即 Issuer ID

    最最重要的是,你需要将密钥ID下载下来,打开~/.appstoreconnect/private_keys,然后在这个下面新建一个文件夹private_keys,然后把下载下来的密钥ID文件放在这个文件下,否则执行上面的命令会报错

    5.执行shell脚本即可

    相关文章

      网友评论

          本文标题:iOS自动化打包到Appstore

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