让他们一起工作:Firebase PRD / DEV / Cocoapods

我花了整整一个星期的时间来尝试将新的iOS应用程序隔离到PRD和DEV环境中,并确保我的所有Pod都能正常工作。 实际上,有大量的方法指南(包括中等,堆栈溢出)可用于分隔环境,但它们仍然不在整个组合中:

  • PRD / DEV:通过使用Build Config和Build Scheme分离GoogleService-Info.plist,并使用Build Run Script将它们自动化。
  • Cocoapods:将所有pod链接到不同的Build Configs,而不会抛出所有编译错误“ No such module”。

经过一番挫折后,我猜想与世界分享我的发现会更好。 希望面临同样问题的人将从中受益。

在完成了整篇文章之后,您将拥有以下内容:

  • 只需1次点击(或最多2次点击😜)即可轻松切换Firebase DEV / PRD环境
  • xcode会根据您选择的环境自动使用Firebase DEV或PRD配置文件(GoogleService-Info.plist)。 无需人工干预。
  • 您可以在ViewController中显示图像(或标签)以区分您的应用是在DEV还是PRD上运行。
  • 最好的是:您可以确保PRD Google Analytics(分析)数据不会被所有这些DEV&TEST数据淹没。

酷吧? 让我们潜入!

此步骤将涵盖以下内容:

  • 生成配置分离
  • 分离建造方案

1.1。 单独的构建配置

通常,xcode会生成2个生成配置“ Debug”和“ Release”,作为新项目的标准问题。 您将把两个配置都复制到所谓的DEV配置中。

打开xcode,然后转到“项目”。 在“编辑器”菜单上,点击“添加配置”→“复制“调试”配置”,并将其命名为“ Debug-DEV”。 对“ Release”执行相同的操作,将其设为“ Release-DEV”。

完成后,您将具有以下配置

1.2。 单独的建造方案

您基本上将创建一个新的构建方案,并为它们标记新创建的DEV Build Configs。

在您的xcode上,选择您的方案,然后点击“ New Scheme…”并用“ -DEV”后缀命名(例如,如果您当前的Build Scheme名称为“ MyAwesomeProject”,则可以创建一个新的“ MyAwesomeProject-DEV” Build Scheme)。

然后,继续并选择新创建的“ Edit Scheme…”,并为其标记DEV Build Configs。

  • 运行→调试-DEV
  • 测试→调试开发
  • 配置文件→Release-DEV
  • 分析→调试-DEV
  • 存档→Release-DEV

哇。 那要注意构建方案/构建配置。 做得好 !!

现在让我们继续处理Cocoapods部分。

此步骤将涵盖以下内容:

  • 修改pod文件以适应新的DEV Build Configs
  • 修改DEV Build Scheme以确保所有Pod都能正确构建

2.1。 修改“ pod文件”

转到您的项目目录,然后编辑您的pod文件。 现在,在“项目”行中,只需添加以下内容(粗体):

,’Debug-DEV’=>:调试,’Release-DEV’=>:发布

 项目'AlertBuddy.xcodeproj', 'Debug-DEV'=>:debug,'Release-DEV'=>:release项目 
平台:ios,'10 .0'目标'AlertBuddy'做
use_frameworks!pod'SwiftyJSON'
吊舱“ Firebase”
pod“ Firebase / Auth”
...

然后正常运行pod install。 那应该告诉Cocoapods识别您的新DEV构建配置。

2.2。 DEV建设方案的修改

转到您的DEV构建方案(例如MyAwesomeProject-DEV),然后点击“ Edit Scheme…”。

在“构建”部分,将所有Pod移至项目构建的顶部。 并确保选中“共享”复选框。

等等,什么! 而已 ?!!?

是的 简单吧?

现在,让我们转到本文的最后一章。 您可以自动在PRD / DEV之间切换GoogleService-Info.plist。

现在是很好的部分。 在这里,您可以将它们链接在一起。 这涉及以下内容:

  • 使您的PRD,DEV文件夹包含单独的GoogleService-Info.plist(正确的是,您需要同时拥有PRD和DEV项目的Firebase plist)
  • 添加构建运行脚本以在切换构建方案时自动切换plist文件

3.1。 将GoogleService-Info.plist分离为PRD / DEV

在Finder中,转到您的项目文件夹,并创建一个名为“ Firebase”的文件夹,然后在其中复制PRD plist和DEV plist。 确保使用其他名称(例如PRD = GoogleService-Info-PRD.plist和DEV = GoogleService-Info-DEV.plist)

将此文件夹拖到您的xcode项目文件夹中(与放置appdelegate.swift文件的位置相同)

3.2。 添加构建运行脚本以自动切换plist

在构建目标中,选择“构建阶段”选项卡,添加名为“ Firebase plist”的新运行脚本,然后添加以下脚本(/ bin / sh)。

您可以将PATH_TO_GOOGLE_PLISTS修改为包含DEV和PRD plist文件的文件夹。

  | PATH_TO_GOOGLE_PLISTS =“ $ {PROJECT_DIR} / AlertBuddy / Firebase” 情况 “ Debug-DEV”中的情况 “ $ {CONFIGURATION}” |  “ Release-DEV”)cp -r“ $ PATH_TO_GOOGLE_PLISTS / GoogleService-Info-DEV.plist”“ $ {BUILT_PRODUCTS_DIR} / $ {PRODUCT_NAME} .app / GoogleService-Info.plist” echo“使用DEV plist” ;;“调试“ |  “发布”)cp -r“ $ PATH_TO_GOOGLE_PLISTS / GoogleService-Info-PRD.plist”“ $ {BUILT_PRODUCTS_DIR} / $ {PRODUCT_NAME} .app / GoogleService-Info.plist” echo“使用PRD plist” ;; *);;  埃萨克 

而已 !! 您可以选择DEV Build Scheme并尝试构建和运行。

现在,您只需切换构建方案即可在Firebase PRD或DEV项目中相应地运行您的应用程序。

是时候庆祝了!!!

既然您一直是这么好的读者,那么让我送出一些额外的奖励!

您还可以使用“其他Swift标志”在您的swift代码中检测正在使用的环境。

例如,您可以将UIImage或UILabel添加到ViewController中,以便知道所使用的环境。 甚至使用该标志来选择您要使用的Cloud Functions URL。 很整洁吧?

4.1。 添加“其他Swift标志”

转到“目标”中“其他Swift标志”部分的“构建设置”标签。 在“ Debug-DEV”和“ Release-DEV”项中,添加“ -DDEV”标志。

您一定想知道“ -D”到底是干什么的。 只要知道这是xcode在命令行中使用的标志,“-D”之后的任何名称都将用作您的swift代码中的标志。

4.2。 在您的快速代码中使用该标志

现在,您可以在代码中使用该标志了。 我们可以简单地在AppDelegate中使用全局变量,例如“ isDevMode”作为布尔标志。 是这样的……

在此代码中,我们根据是否使用“ -DDEV”标志(在我们的DEV Build Config中)设置了“ isDevMode”变量。 您可以使用它来显示图像,打印到控制台等。就像这样……

而已 !! 现在,您可以将Firebase iOS应用程序分离到PRD / DEV环境中,同时保持所有吊舱完好无损。 更好的是,您只需在构建方案之间切换即可自动切换Google plist。

希望您喜欢本文并从中受益。 您可以从Sigma Genesis查找更多此类文章以及我们的其他产品和服务。

访问我们的网站:https://sigmagenesis.com