【问题标题】:How do you use Flutter Flavors in Xcode你如何在 Xcode 中使用 Flutter Flavors
【发布时间】:2020-01-28 10:23:29
【问题描述】:

我现在想要为 iOS 构建一个现有项目(20k 行代码)(该项目已使用 Android 进行开发和测试,尽管我确实检查了它所依赖的每个包都表明 iOS 支持。)

我对 Mac 完全陌生(我花了一段时间才弄清楚如何通过 GUI 启动应用程序),但我设法完成了 MacOS 的 Flutter 设置指南。

Flutter Doctor 显示一切正常,到目前为止,Sample Flutter 应用程序可以在 Xcode iPhone 模拟器上运行。

应用程序需要在构建或启动时指定一个风格,在 android 端我有 dev、qa 和 prod,每个都有完整和免费的,即总共 6 个风格和单独的入口点。

现在,当我尝试从 Android Studio 在模拟器上运行应用程序时,出现错误

Xcode 项目没有定义自定义方案。
您不能使用 --flavor 选项。
无法为模拟器构建应用程序。
在 iPhone 11 Pro Max 上启动应用程序时出错。

在 android 端,我使用多个 src 目录结构与 AndroidManifest 文件和单独的 mipmap 资源目录,加上一个脚本来根据风格切换资产包。每个 Flavors 都指定了一个特定的 main-*.dart 入口点/目标,并且还有一系列 googleservices.json 文件也对应于这些风味。

我现在需要一种将所有这些转换为 xcode 的方法——我认为它被称为“Schemas”。我收集到我需要一个工具来设置模式(如果失败,则需要一个脚本来在构建过程中设置每个风味部分)。或者它们被称为 Runner Profiles?

我的问题是这个工具在哪里。有命令行版本吗?我可以以某种方式启动 Xcode GUI 并为 Android Studio 中的项目设置架构吗?一旦我真正看到它的样子,许多博客中使用的很多术语可能会变得清晰。

一旦我有了工具,我从阅读其他人的问题中意识到,下一个障碍将是查看需要特定设置/调整以使 iOS 构建通过的地方,我认为这对于某些软件包来说尤其是一个问题,但目前我仍在研究工具。

可能与“我的下一个障碍”有关,或者可能与不完整的工具设置有关,当我尝试在没有指定任何风格的情况下在模拟器上运行应用程序时,它告诉我 Xcode 构建完成并且应用程序安装在模拟器,但它失败并显示堆栈跟踪。我的猜测是它告诉我它没有 googleservices.json 文件(一旦设置了正确的 (googleservices-plist.info?) 文件,就应该根据激活的风味对其进行整理 - 但是在哪里和这是怎么做到的?)

也可能是权限问题,甚至是包错误。

编辑:调用堆栈是指 FIRapp 配置和 FLFirebaseMessagingPlugin registerWithRegistrar。这暗示了丢失的 googleservices 配置显然尚不可用 - 因为它是特定于风味的,我需要进行设置。

一些尖锐/具体的问题:
1、flutter run和flutterbuild是否将“flavor”参数作为scheme的名称传递给xcode?我会假设答案是肯定的,否则需要在某个地方进行映射。
2. 如何在 xcode 中为每种风格设置方案(认识到项目在 Android Studio 中的事实)。
3. AndroidManifest.xml 的 iOS 等效项是什么,专门用于指定 applicationID 和 Launcher Icon 和 Application "Label"
4. 如何为 iOS 指定每个架构(每种风格)的 googleservices.json 文件?
5. 如何/在哪里设置每个模式启动器图标?

我想我可以通过使用属于指定“风味”的一组文件替换“默认架构”文件的脚本来完成上述所有工作 - 这是我使用的策略,因为 Flutter Flavors 不会扩展到资产或 pubspec.yaml 文件中设置的任何内容 - 但我更喜欢尽可能使用受支持的工具而不是骇人听闻的解决方案。

【问题讨论】:

    标签: ios xcode flutter build


    【解决方案1】:

    我遇到了同样的问题。如果您使用的是 git,请尝试删除源代码文件夹并再次克隆。 Git 缓存了一些阻止为 iOS 构建的东西

    如果您还没有为 iOS 设置风味,请按照第 3 部分教程进行操作

    https://medium.com/@LohaniDamodar/flutter-separating-build-environment-with-multiple-firebase-environment-92e40e26d275

    【讨论】:

      【解决方案2】:

      删除 .idea 目录并重新启动 Android Stdio 修复了我的环境中的相同问题。

      【讨论】:

        猜你喜欢
        • 2022-08-14
        • 2020-07-05
        • 2022-12-01
        • 2010-12-06
        • 2020-12-02
        • 2019-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多