首页 > 解决方案 > Flutter:在 VS Code Mac Catalina 10.15.7 上的 Android/iOS 模拟器中,项目将无法连接到 Firebase/Firestore

问题描述

首先,我是 Flutter 新手并使用 VS Code

我最近不得不擦除我的硬盘并在我的 Mac 上进行全新安装,并且我已经将 VS Code、Android Studio 和 XCode 放回了它。

最初我遇到了 cocoapods 无法安装的问题,不得不使用最新版本的 Ruby 来完成此操作,但经过一些修补后,我将其全部恢复并运行。

但是,由于某种原因,我的原始项目无法连接到我在 Cloud Firestore (CF) 上创建的数据库,所以我决定制作一个简单的新项目,看看是否可以从 CF 中获得几个标题来显示在 iOS/Android 模拟器上。我还创建了一个新的 CF DB。在全新安装之前,这一切都运行良好,没有任何问题。

我的网络连接很稳定

.plist 文件位于 iOS 文件夹的 Runner 文件夹中,.json 文件位于 app 文件夹中。我已经仔细检查了捆绑包 ID,并按照 Cloud Firestore 说明进行了设置

颤振医生输出:

[✓] Flutter (Channel stable, 1.22.6, on Mac OS X 10.15.7 19H524 darwin-x64, locale en-AU)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 12.4)
[✓] Android Studio (version 4.1)
[✓] VS Code (version 1.53.2)
[✓] Connected device (1 available)

• No issues found!
(base) Matthews-MacBook-Pro:comm_board_app matthewrook$ flutter doctor -v
\[✓] Flutter (Channel stable, 1.22.6, on Mac OS X 10.15.7 19H524 darwin-x64, locale en-AU)
    • Flutter version 1.22.6 at /Users/matthewrook/Utils/flutter
    • Framework revision 9b2d32b605 (3 weeks ago), 2021-01-22 14:36:39 -0800
    • Engine revision 2f0af37152
    • Dart version 2.10.5

 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/matthewrook/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin installed
    • Dart plugin version 201.9317
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.19.0

 
[✓] Connected device (1 available)            
    • sdk gphone x86 (mobile) • emulator-5554 • android-x86 • Android 11 (API 30) (emulator)

• No issues found!

红宝石 V3.0.0

pubspec.yaml 文件依赖项

cloud_firestore: ^0.16.0
  firebase_core: ^0.5.0

app 文件夹中的 build.gradle 文件

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 29

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.comm_board_app"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        multiDexEnabled true
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

apply plugin: 'com.google.gms.google-services'

app 文件夹外的 build.gradle

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.5'

    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

颤振主要代码:

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'board_firestore/board_app.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(new MaterialApp(
    home: BoardApp(),
  ));
}

基本应用程序屏幕代码:

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class BoardApp extends StatefulWidget {
  @override
  _BoardAppState createState() => _BoardAppState();
}

class _BoardAppState extends State<BoardApp> {
  var firestoreDB = FirebaseFirestore.instance.collection('board').snapshots();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Community Board'),
      ),
      body: StreamBuilder(
        stream: firestoreDB,
        builder: (context, snapshot){
          if(!snapshot.hasData) return CircularProgressIndicator();
          return ListView.builder(
            itemCount: snapshot.data.docs.length,
            itemBuilder: (context, int index){
              return Text(snapshot.data.docs[index]['title']);


          });

      }),
      
    );
  }
}

iOS 模拟器的输出:

(base) Matthews-MacBook-Pro:~ matthewrook$ cd W/DynamiteModule( 7897): Local module descriptor class for providerinstaller not found.
bash: syntax error near unexpected token `('
(base) Matthews-MacBook-Pro:~ matthewrook$ I/DynamiteModule( 7897): Considering local module providerinstaller:0 and remote module providerinstaller:0
bash: syntax error near unexpected token `7897'
(base) Matthews-MacBook-Pro:~ matthewrook$ W/ProviderInstaller( 7bash: syntax error near unexpected token `7'
(base) Matthews-MacBook-Pro:~ matthewrook$ cd /Users/matthewrook/Documents/vscodeprojects/comm_board_app
(base) Matthews-MacBook-Pro:comm_board_app matthewrook$ flutter run
Launching lib/main.dart on iPhone 11 in debug mode...
 
Running pod install...                                             10.2s
Running Xcode build...                                                  
 └─Compiling, linking and signing...                        10.7s
Xcode build done.                                           28.3s
Waiting for iPhone 11 to report its views...                         8ms
Syncing files to device iPhone 11...                               242ms

Flutter run key commands.
r Hot reload. 
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on iPhone 11 is available at:
http://127.0.0.1:64767/yS7gUn0Y77s=/
[VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:157:7)
<asynchronous suspension>
#1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12)
#2      MethodChannel.invokeListMethod (package:flutter/src/services/platform_channel.dart:345:41)
#3      MethodChannelFirebase._initializeCore (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:30:36)
#4      MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:75:13)
#5      Firebase.initializeApp (package:firebase_core/src/firebase.dart:43:25)
#6      main (package:comm_board_app/main.dart:7:18)
#7      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:231:25)
#8      _roo<…&gt;

Application finished.

Android 模拟器的输出:

Using hardware rendering with device sdk gphone x86. If you notice graphics artifacts,
consider enabling software rendering with "--enable-software-rendering".
Launching lib/main.dart on sdk gphone x86 in debug mode...
Running Gradle task 'assembleDebug'...                                  
Running Gradle task 'assembleDebug'... Done                         9.2s
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...                 1.4s
Waiting for sdk gphone x86 to report its views...                    8ms
I/OpenGLRenderer( 7807): Davey! duration=1345ms; Flags=1, IntendedVsync=1027146375267, Vsync=1027146375267, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=1027161036842, AnimationStart=1027161068842, PerformTraversalsStart=1027161116842, DrawStart=1028355990842, SyncQueued=1028357744842, SyncStart=1028371123842, IssueDrawCommandsStart=1028371751842, SwapBuffers=1028476267842, FrameCompleted=1028505568842, DequeueBufferDuration=14600000, QueueBufferDuration=886000, GpuCompleted=72904454231491230, 
I/Choreographer( 7807): Skipped 82 frames!  The application may be doing too much work on its main thread.
Syncing files to device sdk gphone x86...                          692ms

Flutter run key commands.
r Hot reload. 
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on sdk gphone x86 is available at:
http://127.0.0.1:65523/yjDkewJfw-Q=/
W/DynamiteModule( 7807): Local module descriptor class for providerinstaller not found.
I/DynamiteModule( 7807): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller( 7807): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
I/.comm_board_ap( 7807): The ClassLoaderContext is a special shared library.
I/chatty  ( 7807): uid=10154(com.example.comm_board_app) AsyncTask #1 identical 1 line
I/.comm_board_ap( 7807): The ClassLoaderContext is a special shared library.
D/nativeloader( 7807): classloader namespace configured for unbundled product apk. library_path=/product/priv-app/PrebuiltGmsCore/lib/x86:/product/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk!/lib/x86:/product/lib:/system/product/lib
I/TetheringManager( 7807): registerTetheringEventCallback:com.example.comm_board_app
V/NativeCrypto( 7807): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods...
W/.comm_board_ap( 7807): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (greylist, reflection, allowed)
I/ProviderInstaller( 7807): Installed default security provider GmsCore_OpenSSL
W/Firestore( 7807): (21.7.1) [OnlineStateTracker]: Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds
W/Firestore( 7807): 
W/Firestore( 7807): This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.
W/ManagedChannelImpl( 7807): [{0}] Failed to resolve name. status={1}
W/Firestore( 7807): (21.7.1) [WatchStream]: (f574755) Stream closed with status: Status{code=UNAVAILABLE, description=Unable to resolve host firestore.googleapis.com, cause=java.lang.RuntimeException: java.net.UnknownHostException: Unable to resolve host "firestore.googleapis.com": No address associated with hostname

我已经尝试删除 podfile.lock 并使用 pod install -repo-update/flutter clean 但不行,我已经尝试了各种线程上建议的一堆其他东西(我很抱歉,我不记得到底是什么了)但是那里似乎在两个输出上运行的是相同的东西,即“W/DynamiteModule(7807):找不到提供程序安装程序的本地模块描述符类。” (Android)和“W / DynamiteModule(7897):找不到providerinstaller的本地模块描述符类。”(iOS)所以这肯定与它有关,但我无法在线找到解决方案

这让我把头发扯掉了,我需要这个用于课堂项目

请帮忙!!

提前致谢

马特

标签: androidiosfluttergoogle-cloud-firestoreflutter-dependencies

解决方案


推荐阅读