神气的 iOS 打包

作者: CoderHG | 来源:发表于2018-03-10 00:51 被阅读2044次

    看文章的标题就很霸气,这个标题也是花了好几秒钟才想出来。

    这就是全自动的打包到上传的脚本

    看完之后会发现其实一点都不神气、反而弱爆了,毕竟很久之前很多大神都在使用这么牛气的方式了。但是对于我来说,还是有点神气的。毕竟之前打包20分钟、并且还忙得不亦乐乎。现在不一样了,一个脚本运行起来,只需两秒钟,并且打包与上传全搞定,那就是一站式服务。用来学习,也是很不错的。[偷笑5分钟、犯困一小时]

    项目代码在这里,顺便点个赞,同时给个star。

    0、来点废话提提神

    这是花了半个下午的成果,初次使用难免有很多看似高大上的东西,实际上是很 low的。
    今天在网上看了不少大神的实现方式,以及脚本编写,都是行不通的,口误口误,不是行不通而是已经过时了而已。
    比如他们用到的 PackageApplication,现在无法使用了,至少我没有成功过。
    其次就是那个 -exportFormat 参数,早已经过期了。然后一直没有找到替代品,直接报这样的错:xcodebuild: error: invalid option '-exportFormat'
    为了找到正确的,确实是费了不小的劲。然后通过命令 xcodebuild -h 无意间看到了这个 -exportOptionsPlist <plistpath>,联想到每次打包的时候在那个包文件夹中有类似的文件,所以报着试一试的心理。没想到还成功了。
    建议看一下这个:https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW936

    一、具体流程

    • 准备
    • 打包
    • 上传

    1. 准备

    • 创建一个项目,比如HGPGY
    • 生成一个 ExportOptions.plist 文件,这个是打包的配置文件。如果不想手动创建,可以先第一次打一个包,然后在导出 ipa 的时候自动生成,以后使用这个文件即可。并将这个文件放到与项目目录同一级(非必须,可以自己规定)。 特别提醒:这个文件很重要,里面都是开发者账号与项目关联相关的配置。
      ExportOptions.plist文件

    2. 打包

    打包步骤为:构建 .xcarchive 再导出 .ipa 。

    2.1 构建 .xcarchive 文件

    在终端输入:
    xcodebuild archive -project HGPGY.xcodeproj -scheme HGPGY -configuration Release -archivePath HGPGY.xcarchive

    2.2 导出 .ipa 包

    在终端输入:
    xcodebuild -exportArchive -archivePath HGPGY.xcarchive -exportPath HGPGY.ipa -exportOptionsPlist ExportOptions.plist

    3. 上传(以蒲公英为例)

    这里不做介绍,具体详情可以查阅蒲公英官方文档:https://www.pgyer.com/doc/view/upload_one_command

    二、脚本实现

    具体的脚本在这里,顺便点个赞,同时给个star。

    直接在终端输入:
    sh UploadPackage2PGY.sh <项目名称> <更新日志>

    比如:
    sh UploadPackage2PGY.sh HGPGY 在使用高大上的脚本做打包上传.

    打包之前的样子:

    打包之前的样子

    打完包是这样子的:

    红框框中的两个文件是打包哦过程中生成的
    脚本写得很low,但是还算可以了,至少是正确的。更多高质量的脚本代码,敬请期待!

    如果还感兴趣,可以再欣赏一下这个代码,这里面暴露了很多OC中的秘密(与本打包话题无关)。

    补充于 2018 年 3 月 29 日 17:14 ,若操作使用我的蒲公英账号的 Ukey 与apiKey 操作成功,那么您的项目会提交到我的蒲公英账号,可以通过这个二维码扫面安装:

    扫描安装你提交的 APP

    或者点击这里安装

    记得改一下界面,然后看效果。祝您愉快!

    参考文章:

    相关文章

      网友评论

      • 一身诗意千寻瀑968:禁止自动签名,无法生成概要文件。要启用自动签名,请将允许更新传递到xcodebuild。 报这个错啥意思啊 貌似iOS9过后不能自动签名了吗
        CoderHG:@转身我还在 你可以首先正常打包,正常打包结束之后,在 ipa 文件中就会自动生成这个plist 文件,然后在自动打包的时候使用,就可以了。类似这张图片:https://upload-images.jianshu.io/upload_images/1198135-8ca655110af769a2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/412
        一身诗意千寻瀑968:@CoderHG 怎么配置啊 配置点什么呢
        CoderHG:@转身我还在 需要配置一个 ExportOptions.plist 文件
      • 秋雨无痕:我也是自己折腾的
        CoderHG:@秋雨无痕 :+1::+1:、要是有新发现,期待分享。
      • 老王技术栈:跑不动shell脚本。无法执行
        CoderHG:其次,需要将 ExportOptions.plist 文件修改成你的。至少改一下 teamID 的值。
        CoderHG:有什么提示么?在终端使用命令:sh UploadPackage2PGY.sh 然后回车。
      • chdo002:应该看文档啊 至少用man 查看一下使用说明
      • JavenWang:用fastlane吧 别再自己折腾了
      • CoderXLL:有三个疑问:
        1. 现在好多项目都是由cocopods管理三方库,与项目一起在一个workspace里面。按照文章提供的脚本是打包了项目工程,却没有打包pod工程,最后导出ipa包肯定失败

        2.如果想使用Cross-platform里的Aggregate来依赖工程,运行脚本。我试过如果将以上脚本的S1,S2写死,运行也是可以的。我的疑问是能不能在Aggregate这个target里运行脚本进行传值呢

        3.难道不应该是“神奇的iOS打包”:sweat_smile:
        CoderHG:1. 打包的第一步: 将参数 -project 换成 -workspace即可, 你可以直接在终端通过这个命令来查看:xcodebuild -h,里面有这么一个个:xcodebuild -workspace <workspacename> -scheme <schemeName> [-destination <destinationspecifier>]... [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings] [<buildsetting>=<value>]... [<buildaction>]...

        2.可以的吧, 没有试过. 不管是原生的,还是跨平台的, iOS 打包的原理都是一样的.所谓的target就是上面命令的 -scheme 参数.很多的时候总是会出现一个项目中配置不的target的情况.

        3. 有点道理.

      本文标题:神气的 iOS 打包

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