Firebase 如何在颤振中设置不同的火基环境
我正试图找出如何在一个flutter项目中设置不同的firebase环境 我知道如何在firebase中实现这一点,我创建了两个项目,一个用于生产,一个用于测试。然后,在iOS或Android项目中,我可以使用不同的方法使用单独的Firebase 如何在颤振中设置不同的火基环境,firebase,flutter,environment,test-environments,Firebase,Flutter,Environment,Test Environments,我正试图找出如何在一个flutter项目中设置不同的firebase环境 我知道如何在firebase中实现这一点,我创建了两个项目,一个用于生产,一个用于测试。然后,在iOS或Android项目中,我可以使用不同的方法使用单独的GoogleServices.json或GoogleServices Info.plist文件在这两个环境之间切换 在颤振中,我找到了如何分离环境的描述,但它只解释了如何在颤振代码中区分环境 我如何让这个环境在编译时更改iOS和Android的构建?甚至在构建时只允许文
GoogleServices.json
或GoogleServices Info.plist
文件在这两个环境之间切换
在颤振中,我找到了如何分离环境的描述,但它只解释了如何在颤振代码中区分环境
我如何让这个环境在编译时更改iOS和Android的构建?甚至在构建时只允许文件复制挂钩就足够了。Salvatore Giordano写了一篇博客文章,详细描述了如何实现这一点: 颤振接受一个参数
--flavor=
,该参数允许您选择不同的构建风格。在安卓系统中,选择不同的构建风格,这是可以预期的。IOS是一个小把戏,因为每种口味都需要一个方案,而且还需要Release-
形式的构建配置
一旦这些部件就位,就可以使用它们来选择firebase配置,就像在任何iOS或Android项目中一样
现在的挑战是让Dart代码也意识到它的味道,而这篇博文并没有提供很好的解决方案。这表明可以使用使用不同入口点的标准方法,但正确的入口点必须由调用应用程序的人员手动匹配到正确的风格。我写了一篇文章,介绍了如何使用flavors和平台通道在dart代码中对Firebase配置和运行时配置执行此操作 Flatter口味与Android口味完美结合。对于iOS,您需要为每种风格创建Xcode方案,并将它们链接到构建配置
对于dart配置,您可以使用平台通道在运行时获取构建期间使用的风格。这使您可以配置应用程序,而无需拥有多个main.dart文件或传递目标参数。特别是对于Firebase env config,您可以使用CodeMagic,其中解释了如何使用build env变量设置
plist
文件
如果您需要在Dart代码中包含一组不同的值,例如您可以使用的选项。它允许从控制台命令参数生成Dart类配置文件
2020年5月12日更新
从Flatter 1.17开始,您实际上可以在flatter run
和flatter build
命令中使用编译时变量和-dart define
参数
您可以使用FirebaseApp.configure切换帐户。您可以提供自己的解决方案或秘密开发面板在它们之间切换 解决方案将构建风格,plist实现将在部署TestFlight+时将您锁定到构建中,因为它们很混乱 这里有一个例子:(您也可以使用资产)。
随着Flatter for Web向稳定通道的发布,我将其整合起来。嘿,你不需要这样做。您可以在运行时加载不同的文件。看看我的答案。构建风格很糟糕,例如QA将如何测试TestFlight构建以及许多其他问题。付费链接并没有真正的用处
// Load a named file.
let filePath = Bundle.main.path(forResource: "MyGoogleService", ofType: "plist")
guard let fileopts = FirebaseOptions(contentsOfFile: filePath!)
else { assert(false, "Couldn't load config file") }
FirebaseApp.configure(options: fileopts)