无法在 IOS 上使用 firebase 运行颤振应用程序

Posted

技术标签:

【中文标题】无法在 IOS 上使用 firebase 运行颤振应用程序【英文标题】:Can't run flutter app with firebase on IOS 【发布时间】:2019-06-03 03:26:09 【问题描述】:

我在尝试运行时收到此错误。

Launching lib/main.dart on iPhone XR in debug mode...
Starting Xcode build...

Xcode build done.                                           35.9s

*** First throw call stack:

(

0   CoreFoundation                      0x00000001099ff1bb __exceptionPreprocess + 331

1   libobjc.A.dylib                     0x0000000108f9d735 objc_exception_throw + 48

2   CoreFoundation                      0x00000001099ff015 +[NSException raise:format:] + 197

3   Runner                              0x00000001040a8aa0 +[FIRApp configure] + 576

4   Runner                              0x00000001044a931c -[FLTCloudFirestorePlugin init] + 188

5   Runner                              0x00000001044a91c9 +[FLTCloudFirestorePlugin registerWithRegistrar:] + 297

6   Runner                              0x000000010404d19e +[GeneratedPluginRegistrant registerWithRegistry:] + 126

7   Runner                        <…>

[✓] Flutter(Channel dev, v1.1.5, on Mac OS X 10.14.2 18C54, locale en-NG)

[✓] android 工具链 - 为 Android 设备开发(Android SDK 版本 28.0.3)

[✓] ios 工具链 - 为 iOS 设备开发 (Xcode 10.1)

[✓] Android Studio(版本 3.2)

[✓] IntelliJ IDEA 终极版(2018.1.6 版)

[✓] 已连接设备(1 个可用)

• 未发现任何问题!

【问题讨论】:

你的 ios/Runner 文件夹怎么样?你放了 info.list 吗? 你的意思是info.plist??是的。没有 info.list 【参考方案1】:

我猜你忘记将GoogleService-Info.plist 文件添加到你的 ios 项目中

请关注codelab (point 6 and 7 specifically) 获取详细说明。

请记住,将其从finder/explorercommand line 复制到您的ios/Runner 文件夹中是不够的。

您需要用Xcode 打开ios/Runner.xcworkspace 并将文件添加到项目树Xcode 需要知道这个文件,以便可以在应用程序包中复制它

【讨论】:

非常感谢,我的错误是我将它直接复制到*** runner 目录中。将它放在 Runner/Runner 目录中解决了我的问题。 确实这正是我一直在努力解决的问题。谢谢! 也感谢这个!这让我发疯了 谢谢!【参考方案2】:

对于具有 两个 google-services plist 文件的情况,您可以添加一个新的构建阶段以将文件复制到编译时的正确位置。

    在 iOS 文件夹的根目录及其内部创建一个配置文件夹 具有您要定位的两个应用程序/构建的名称。添加 文件相应的文件夹。接下来,前往 Target Runner 并继续 构建阶段部分。 点击顶部的 + 按钮添加一个新的运行脚本阶段 该部分的。 将其重命名为描述性标题,我称之为我的复制 GoogleServices-Info.plist 到正确的位置 然后向右移动 在 Link Binary With Libraries 阶段下方。 将以下脚本复制到构建阶段正文中
environment="default"
# Regex to extract the scheme name from the Build Configuration
# We have named our Build Configurations as Debug-dev, Debug-prod etc.
# Here, dev and prod are the scheme names. This kind of naming is required by Flutter for flavors to work.
# We are using the $CONFIGURATION variable available in the XCode build environment to extract 
# the environment (or flavor)
# For eg.
# If CONFIGURATION="Debug-prod", then environment will get set to "prod".
if [[ $CONFIGURATION =~ -([^-]*)$ ]]; then
environment=$BASH_REMATCH[1]
fi

echo $environment

# Name and path of the resource we're copying
GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
GOOGLESERVICE_INFO_FILE=$PROJECT_DIR/config/$environment/$GOOGLESERVICE_INFO_PLIST

# Make sure GoogleService-Info.plist exists
echo "Looking for $GOOGLESERVICE_INFO_PLIST in $GOOGLESERVICE_INFO_FILE"
if [ ! -f $GOOGLESERVICE_INFO_FILE ]
then
echo "No GoogleService-Info.plist found. Please ensure it's in the proper directory."
exit 1
fi

# Get a reference to the destination location for the GoogleService-Info.plist
# This is the default location where Firebase init code expects to find GoogleServices-Info.plist file
PLIST_DESTINATION=$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app
echo "Will copy $GOOGLESERVICE_INFO_PLIST to final destination: $PLIST_DESTINATION"

# Copy over the prod GoogleService-Info.plist for Release builds
cp "$GOOGLESERVICE_INFO_FILE" "$PLIST_DESTINATION"

尝试运行应用程序,它应该很好

【讨论】:

【参考方案3】:

如果您正在为 iOS 和 Android 开发 Flutter 应用,则需要在同一个 Firebase 项目中分别注册 iOS 和 Android 版本。

配置 iOS

    在 Firebase 控制台中,选择左侧导航栏中的“项目概览”,然后点击“通过将 Firebase 添加到您的应用来开始”下的 iOS 按钮。

    要提供的重要值是 iOS 捆绑包 ID,您将使用以下三个步骤获取它。

    在命令行工具中,进入 Flutter 应用的顶层目录。

    运行命令open ios/Runner.xcworkspace 打开Xcode(Go > ios/Runner.xcworkspace 然后右键选择Flutter > 点击Open iOS module in Xcode)

    在 Xcode 中,单击左窗格中的*** Runner 以在右窗格中显示 General 选项卡,如下面的屏幕截图所示。复制捆绑标识符值。

    返回 Firebase 对话框,将复制的包标识符粘贴到 iOS 包 ID 字段中,然后点击注册应用程序。

    继续使用 Firebase,按照说明下载配置文件 GoogleService-Info.plist。

    返回 Xcode。请注意,Runner 有一个子文件夹,也称为 Runner(如上面的屏幕截图所示)。

    将 GoogleService-Info.plist 文件(您刚刚下载的)拖到该 Runner 子文件夹中。

    在 Xcode 中出现的对话框中,单击 Finish。

    返回 Firebase 控制台。在设置步骤中,点击下一步,然后跳过其余步骤并返回 Firebase 控制台的主页。

您已完成为 iOS 配置 Flutter 应用程序!

For More : Platform-specific Firebase configuration

【讨论】:

以上是关于无法在 IOS 上使用 firebase 运行颤振应用程序的主要内容,如果未能解决你的问题,请参考以下文章

处理 Podfile 的安装后挂钩时出错。无法在 iOS 模拟器上运行颤振项目得到 pod 错误

安装 Firebase 后 Flutter 无法在 Android 上运行

iOS 上的 Firebase 应用检查在构建时崩溃

无法在 iOS 模拟器上运行颤振应用程序

颤振:致命错误:找不到模块“firebase_analytics”

无法在 IOS 移动设备上运行我的颤振项目