android - 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<…>
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)所以这肯定与它有关,但我无法在线找到解决方案
这让我把头发扯掉了,我需要这个用于课堂项目
请帮忙!!
提前致谢
马特
解决方案
推荐阅读
- reactjs - 如何在 src 文件夹之外要求具有反应电子的图像(应用程序支持)
- python-3.x - 填写每个组的缺失日期并在 Pandas 中估算空值
- python - 如何在笛卡尔坐标中使用 RANSAC 拟合线?
- c# - 在基本添加语句后保存更改调用超时的问题
- javascript - 更改后 ReactJs 状态不更新
- python - 无法在机器人框架中添加 httplibrary
- ios - UIView 不会出现在模拟器中
- android - 如何在条形图中启用滚动并将 xAxis 标签与条形组对齐?
- yii2 - Yii2 中的 ForbiddenHttpException 问题
- rdf - 我已经开发了一个本体——我该如何进行?