美文网首页iOSiOS开发奔跑吧 iOS
iOS命令行自动打包(archive)

iOS命令行自动打包(archive)

作者: 苏小妖灬 | 来源:发表于2016-12-23 09:27 被阅读5841次

    前言

    iOS开发工程师在测试修复bug的过程中,一般会存在频繁打包的情况,如果一步步在xcode中点击archive,下一步,下一步。。。这样太浪费我们的时间了。下面我们来介绍在命令行使用xcodebuild命令进行自动archive打包并且导出ipa文件。

    准备工作

    打开你的项目工程配置你的证书和描述文件:

    配置证书.png

    clean一下你的工程

    进入到你的工程目录下面:
      cd /Dandy/dandy_workSpace/TestAutoPacking/
      使用以下命令clean工程:
      xcodebuild clean -project TestAutoPacking.xcodeproj -scheme TestAutoPacking -configuration Release
      如果你的工程pod了第三方库,那么你的工程目录下会有".xcworkspace"文件,你将使用这个文件来打开你的项目工程,我们需要替换下我们的命令:
      xcodebuild clean -workspace TestAutoPacking.xcworkspace -scheme TestAutoPacking -configuration Release

      上面的命令中:
      -project TestAutoPacking.xcodeproj:编译项目名称
      -workspace TestAutoPacking.xcworkspace:编译工作空间名称
      -scheme TestAutoPacking:scheme名称(一般会与你的项目名称相同)
      -configuration Release:(Debug/Release)
    

    clean成功会是这样:

    clean.png

    archive导出.xcarchive文件

    使用下面的命令archive导出.xcarchive文件:
      xcodebuild archive -project TestAutoPacking.xcodeproj -scheme TestAutoPacking -archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive
      或者:
      xcodebuild archive -workspace TestAutoPacking.xcworkspace -scheme TestAutoPacking -archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive

      上面的命令中:
      -project TestAutoPacking.xcodeproj:同clean步骤中一样
      -workspace TestAutoPacking.xcworkspace:同clean步骤中一样
      -scheme TestAutoPacking:同clean步骤中一样
      -archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive:导出.xcarchive文件的目录以及文件名称
    

    archive成功会是这样:

    archive.png

    同样会在/dandy/xmeAutoArchive目录下面生成一个TestAutoPacking.xcarchive文件:

    archiveFile.png

    导出ipa包

    使用下面命令将.xcarchive文件导出为ipa包:
      xcodebuild -exportArchive -archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive -exportPath /dandy/xmeAutoArchive/TestAutoPacking -exportFormat ipa -exportProvisioningProfile "developmentProfile"

      上面的命令中:
      -archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive:刚刚导出的.xcarchive文件的目录
      -exportPath /dandy/xmeAutoArchive/TestAutoPacking:将要导出的ipa文件的目录以及文件名
      -exportFormat ipa:导出为ipa文件
      -exportProvisioningProfile "developmentProfile":你配置的profile文件的名称:
    
    profile文件名称.png

    导出ipa成功会是这样:

    ipa.png

    同样会在/dandy/xmeAutoArchive目录下面生成一个TestAutoPacking.ipa文件:

    ipaFile.png

    这样我们的ipa包就导出成功了。

    上传ipa包

    至于导出ipa包后,怎么安装到手机上,方式就很多了,托管平台也很多:蒲公英,fir.im。就看您自己的选择啦~

    结语

    希望对您有帮助,谢谢支持欢迎**关注**,我会在空余时间更新技术文章

    相关文章

      网友评论

      • 今天星期伍:nice,解决了我一个问题
      • FengxinLi:请问一下 /dandy/xmeAutoArchive/ 这个目录是自动生成的吗?
      • 蜗牛有壳1112:你好,请问一下,我的脚本到Touch 这里了,但是** ARCHIVE FAILED **,你知道可能有哪些原因吗?同一个tag 偶尔成功偶尔失败,遇见一两周了,找不到问题
      • 5542dfcbcc00:TestAutoPacking.xcarchive 这个文件的目录是怎么来的啊
        5542dfcbcc00:@苏小妖灬 ios_scheme="$APP_SUB"
        ios_export_path="$iOS_IPA_SAVE_DIR"
        ios_project_path="$APP_SUB.xcworkspace"
        ios_archive_path=""
        ios_configuration="Release"

        脚本是这样写的..
        5542dfcbcc00:@苏小妖灬 我这边提示 error: archive at path '/tmp/DaoxilaApp.xcarchive' is malformed 是为啥呢 在Jenkins上面
        苏小妖灬:就是你保存TestAutoPacking.xcarchive的地址,你自己创建一个就行
      • 南方小金豆:能在脚本里面直接指定好development team 跟profile文件吗?
      • 许久以前:-exportFormat ipa 这个已经不再支持了, 得用optionPlist 指定一个plist文件,这个文件里面,指定发布渠道method : ad hoc 或者App Store
        zongsu:@那份牵挂给了谁 新建一个workspace空间就好了
        南方小金豆:直接用archive命令会提示说 xxx.xcworkspace不存在。这个知道怎么解决吗
      • 微冷l:你好,请问为什么 我提示 -exportArchive without -exportOptionsPlist is deprecated 过时呢?
        微冷l:@许久以前 我没直接发布,只是打出包来
        许久以前:archive 命令不需要指定发布渠道吗?ad hoc 还是 App Store什么的
        微冷l:想顺便问下,脚本写入 team文件名 和 ProvisioningProfile文件编号 怎么写?
      • 奉强:fastlane 你值得拥有
        苏小妖灬:@奉强 我晓得
      • wsj2012:早就一行命令搞定所有工作:pod update + 打包+上传到 appStore 或者 testfight ! 就一行命令 10min内搞定
        苏小妖灬:@wsj2012 嗯,我知道的。
        wsj2012: @苏小妖灬 嗯 ,
        苏小妖灬:需要集成第三方工具吧?
      • i_have_an_Apple:又一个装逼技能get✔️ :stuck_out_tongue_winking_eye:
        苏小妖灬:@i_have_an_Apple 嘿嘿,谢谢支持
      • lxb0706:可以把这些整合到一个脚本...
        苏小妖灬:@ChrisLian 是的。
      • 否极泰来_L:如果只要ipa文件,直接拖出来就可以了:sweat_smile:
        苏小妖灬:@航磊_ 然后呢,ipa呢?
        否极泰来_L:@苏小妖灬 编译一下,然后把.app拖出来
        苏小妖灬:@航磊_ 什么意思?
      • 0d84922e336a:这个也不是自动执行的啊,出了错误还没有Xcode直观明显,是我没看明白?
        苏小妖灬:@奇鑫 通过命令行输入命令来打包,只是替代了你在Xcode中点击的步骤,报错的话,命令行会显示。在我看来,比我在Xcode中一步步的点击方便多了。

      本文标题:iOS命令行自动打包(archive)

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