zoukankan      html  css  js  c++  java
  • iOS开发系列-自动化分发测试打包

    概述

    项目在测试阶段需要频繁打包给测试人员,对于这些固定化的操作我们可以使用自动化的手段去解决,将时间放在有意义的事情上。
    xcodebuild 是苹果发布自动构建的工具。

    Shell脚本打包

    xcrun PackageApplication方式在Xcode升级到8.3已就过期了,苹果建议我们使用xcodebuild -exportArchive的方式。

    我们平时通过Xcode执行Run命令,生成iPa的中间主要分为两个大的步骤:

    1. xcodebuild archive生成ProjectName..xcarchive文件
    2. xcodebuild -exportArchive将1步骤中的.xcarchive生成ipa安装包

    打包脚本编写

    创建一个xcodebuild.sh用来编写脚本如下:

    #!/bin/bash
    
    ZWProjectName="TestProj"
    ZWScheme="TestProj"
    ZWConfiguration="Release"
    
    ZWDate=`date +%Y%m%d_%H%M`
    ZWWorkspace=`pwd`
    echo "workspace=$ZWWorkspace-----------------------"
    ZWBuildDir="$ZWWorkspace/build"        #build路径
    ZWBuildTempDir="$ZWBuildDir/temp/$ZWDate"    #构建过程中的文件
    HCIpaDir="$ZWBuildDir/ipa"                                #生成ipa文件路径
    
    #-------PackageApplication已经不推荐使用了 warning: PackageApplication is deprecated, use `xcodebuild -exportArchive` instead.-----
    
    xcodebuild archive 
    -workspace "$ZWWorkspace/$ZWProjectName.xcodeproj/project.xcworkspace" 
    -scheme "$ZWScheme" 
    -configuration "$ZWConfiguration" 
    -archivePath "$ZWBuildTempDir/$ZWProjectName.xcarchive"
    #CODE_SIGN_IDENTITY="" #证书
    #PROVISIONING_PROFILE="" #描述文件UUID
    
    xcodebuild 
    -exportArchive 
    -archivePath "$ZWBuildTempDir/$ZWProjectName.xcarchive" 
    -exportPath "$HCIpaDir/$ZWDate/" 
    -exportOptionsPlist "./exportOptionsPlist.plist" 
    #CODE_SIGN_IDENTITY="" #证书
    #PROVISIONING_PROFILE="" #描述文件UUID
    

    对于证书文件与描述文件我们可以添加,如果这里没有填写,那么会默认按着xcode的当前配置。如果你想在这里配置,可通过下面的方式来获取CODE_SIGN_IDENTITY与PROVISIONING_PROFILE对应的内容。

    CODE_SIGN_IDENTITY的获取

    在钥匙串找到我们的证书,右键显示简介,可查看对应证书的CODE_SIGN_IDENTITY

    PROVISIONING_PROFILE的获取

    描述文件UUID的获取,安装的的描述文件在电脑的安装路径/Users/haifeng/Library/MobileDevice/Provisioning Profiles。点击对应的证书预览中就可以看到UUID。

    exportOptionsPlist.plist

    对于通过xcodebuild -exportArchive方式生成ipa需要一个exportOptionsPlist.plist文件。主要描述了打包的一些信息。这个可能随着xcode版本会变化,我们可以通过第一次使用Xcode手动打包一次生成不止ipa还有一个ExportOptions.plist的文件。我们只需要将这个文件名修改exportOptionsPlist.plist就可以了。

    执行脚本自动化打包

    Xcode配置

    在执行脚本之前确保一下配置

    • 当前编译配置release
    • 由于我这里没有开发者账号密码 我手动配置

      配置完后编译项目不存在报错就可以了,可以继续下面的流程。

    将我们编写的xcodebuild.sh与exportOptionsPlist.plist放在Project.xcodeproj的同目录下,终端执行脚本。

    这里我在生成ipa的工程中报错,发现不会主动创建ipad文件夹原因导致,这里我展示通过手动在build目录下创建ipa文件夹解决的。

    分发

    我这里通过蒲公英进行发布。这是在上面的脚本添加了蒲公英官方文档中的分发脚本。

    #通过蒲公英提供的上传应用 API,调用系统的 curl 命令来上传应用。
    FilePath="$HCIpaDir/$ZWDate/${ZWScheme}.ipa"
    UKey="User key" #开发者的用户 Key,在应用管理-API中查看
    ApiKey="API key" #是开发者的 API Key,在应用管理-API中查看 注意不是APPKey
    
    chmod -R 777 "${FilePath}"
    curl 
    -F "file=@${FilePath}" 
    -F "uKey=${UKey}" 
    -F "_api_key=${ApiKey}" 
    https://www.pgyer.com/apiv2/app/upload
    

    关于蒲公英uKey与_api_key的获取在应用管理-API中查看 注意不是应用的APPKey

    再次执行脚本,终端最终输出如下,就代表上传应用成功。

  • 相关阅读:
    pspc命令使用(转)
    NSArray数组的使用常用方法(转)
    css兼容的问题 持续更新
    关于memcache
    drupal7 学习笔记(持续更新中...)
    JavaScript的继承 转载
    浏览器的缓存机制
    我的js单例模式
    javascript运行机制
    javascrpt绑定事件之匿名函数
  • 原文地址:https://www.cnblogs.com/CoderHong/p/8931562.html
Copyright © 2011-2022 走看看