无法在 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/explorer
或command 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 上运行