专栏名称: Tiny4Voice
一天一条来自 Tinyfool 的语音鸡汤,暖胃暖心,让我们一起在漫漫长夜里面默默前行,在死之前,没有终点,不会停歇。
目录
相关文章推荐
掌上澄江  ·  2025赛季,云南玉昆主场套票怎么买?预告来了→ ·  22 小时前  
掌上澄江  ·  2025赛季,云南玉昆主场套票怎么买?预告来了→ ·  22 小时前  
晨光里的今天  ·  谁懂高速陪跑搭子的含金量 ·  2 天前  
晨光里的今天  ·  谁懂高速陪跑搭子的含金量 ·  2 天前  
苏州园区公安微警务  ·  我们这一年丨唯亭派出所 ·  2 天前  
平湖万州  ·  再次受伤,谷爱凌宣布:退出 ·  4 天前  
平湖万州  ·  再次受伤,谷爱凌宣布:退出 ·  4 天前  
51好读  ›  专栏  ›  Tiny4Voice

用 Xcode cloud 解决 Xcode-beta 无法提交 App 的问题

Tiny4Voice  · 公众号  ·  · 2024-06-26 11:45

正文

前两天苹果的 WWDC 2024结束,每次苹果召开 WWDC 都是苹果平台开发者的节日。听完 Keynote,大家往往就想最先下载测试版本的操作系统和 Xcode 来尝鲜。

但是这里也有一个矛盾,一般来说从测试版到正式版要1个多月的时间。而测试版的 Xcode-beta 是无法提交 App。也就是尝鲜的话,你就有一个多月没办法提交你的 App。

解决的方法,一般是如果自己有多台 mac,其中一台不升级,专门留着用来提交 App。还有一种就是安装多系统。

但是前几年,苹果推出了 Xcode cloud,我就想是不是可以利用 Xcode cloud来解决这个问题呢?果然解决了。

大概做法如下:

首先,打开 Xcode 打开你的代码工程文件。然后按键盘 ⌘+9 。这会打开侧边栏的 report 页面,如下图,选择 Cloud。即可看到常见 Xcode cloud的向导。

点击 Get Started... 按钮,然后按照向导一步步执行即可。

过程包括选择 product,授权 Xcode 访问你的 Github 代码库等步骤。

完成后,Cloud 页面如图:

主要显示的是,Build的历史记录,对勾和叉,代表了成功的构建和失败的构建,这很一目了然。

默认的设置是每次代码提交到 Github 就会自动 build 一次。熟悉其他 CI 系统的人应该很好上手。也可以在 Xcode 当前界面右侧的详情页,右上角点击 Start Build 手动 Build。

在 App Store Connect 网站的 App 页面也可以找到 Xcode cloud 的页面,也可以用页面右上角的 “启动构建版本” 按钮来手动构建。

  1. 这样直接设置的 Xcode cloud 工作流,直接 build 往往会失败。因为我们往往会用 CocoaPods 或者 Carthage 来管理我们依赖的第三方库。直接从 Github 拉出来的代码不包含这些库的代码,就无法正常编译。我自己用的是 CocoaPods 下面就介绍一下。

这需要自定义的 build 脚本,不过不用担心,非常简单,如果你熟悉其他的 CI 系统就更容易理解。

Xcode Cloud 的构建过程如下图:

  1. 创建临时环境

  2. Clone 代码

  3. 执行 Post-Clone 脚本(自定义的在 Clone后做处理的脚本)

  4. 解决依赖关系

  5. 执行 Xcodebuild 之前的前置脚本

  6. 执行 xcodebuild 命令

  7. 执行 Xcodebuil d 之前的后置脚

  8. 保存结果

图中蓝色部分,都是系统自动执行的。而3,5,6部分分别对应三个自定义脚本。

ci _post _clone .sh 文件 处理 clone 代码后续的处理。 ci _pre _xcodebuild.sh 文件处理 执行 Xcodebuild 之前的前置工作。 c i _post _xcodebuild .sh 文件处理执行 Xcodebuild 之后的后续操作。

在你的代码目录下创建一个 ci _scripts 目录,在里面创建这三个文件就可以。加入 CocoaPods 的第三方依赖处理代码,我觉得可以放在 ci _ po st _clone . sh 里,也可以放在 ci _pre _xcodebuild.sh。区别不大,我做的时候,放在 ci _pre _xcodebuild.sh 里了。

我找到的一个建议 Cocoa Pods 处理代码为:

#!/bin/shgem install cocoapodspod install


经测试失败,因为 xcode build 环境是 gem 2.6 而且不可直接安装新的库。

我经过测试,自己写的处理代码为:

#!/bin/bash\curl -sSL https://get.rvm.io | bash -s stablesource /Users/local/.rvm/scripts/rvmrvm install 2.7.2rvm use 2.7.2 --defaultgem install cocoapodspod install


经测试,完全没问题。

手动给脚本加上执行权限 chmod +x ci _pre _xcodebuild.sh,然后提交到 Git 以后,就OK了。







请到「今天看啥」查看全文