Flutter集成Firebaseandroid
FlutterFire是一套Flutter插件,可將Flutter應用程序鏈接到Firebase。ios
首先要建立一個Firebase項目git
這一步跟這Firebase的流程走就能夠github
在Android上使用FlutterFire以前,必須首先使用Android應用程序鏈接到Firebase項目。json
在Firebase控制檯上,爲您的Firebase項目添加一個新的Android應用程序或選擇一個現有的Android應用程序。markdown
註冊您的Android應用後,請從Firebase控制檯下載配置文件(該文件稱爲google-services.json)。將此文件添加到Flutter項目中的android / app目錄中。app
爲了容許Firebase在Android上使用配置,必須在項目上應用google-services
插件。這須要修改android /目錄中的兩個文件。異步
首先,將google-services
插件添加爲android / build.gradle文件內的依賴項:ide
buildscript {
dependencies {
// ... other dependencies
classpath 'com.google.gms:google-services:4.3.3'
}
}
複製代碼
最後,在/android/app/build.gradle文件內的添加如下內容來執行插件:oop
apply plugin: 'com.android.application'
//add this
apply plugin: 'com.google.gms.google-services'
複製代碼
因爲某些Firebase SDK(特別是Firestore)中的類不少,它可能使您超出Android構建系統上64k方法的限制,而且在合併dex檔案時您可能會收到錯誤提示Error:方法引用數.dex文件中的值不能超過64K。
若是確實出現此錯誤,咱們建議啓用Multidex for Android。
若是您的應用僅針對Android 21或更高版本(minSdkVersion),則默認狀況下已啓用multidex,而且您不須要multidex支持庫。
可是,若是您的minSdkVersion設置爲20或更低,則必須使用multidex支持庫並對應用程序項目進行如下修改:
打開/android/app/build.gradle文件。在依賴項下添加multidex模塊,並在defaultConfig中啓用它:
android {
defaultConfig {
// ...
minSdkVersion 16
targetSdkVersion 28
//add this
multiDexEnabled true
}
}
dependencies {
//add this
implementation 'com.android.support:multidex:1.0.3'
}
複製代碼
請訪問Android官方文檔以瞭解更多信息。
在iOS上使用FlutterFire以前,必須首先使用iOS應用程序鏈接到Firebase項目。
在Firebase控制檯上,爲您的Firebase項目添加一個新的iOS應用或選擇一個現有的iOS應用。 iOS bundle ID
必須與您的本地項目bundle ID
相匹配。使用Xcode打開ios / Runner.xcworkspace時,可在「常規」選項卡中找到bundle ID
。
下載Firebase應用程序的GoogleService-Info.plist文件。
接下來,您必須使用Xcode將文件添加到項目中(經過文件系統手動添加不會將文件連接到項目)。
使用Xcode打開項目的ios / {projectName} .xcworkspace文件。在Xcode的左側項目導航中,右鍵單擊Runner,而後選擇「添加文件」,
選擇您下載的GoogleService-Info.plist文件,並確保啓用了「Copy items if needed」複選框.
在使用任何Firebase服務以前,須要先初始化FlutterFire(您能夠將這一過程視爲FlutterFire「引導」自己)。初始化步驟是異步的,這意味着您須要防止任何FlutterFire相關的使用,直到初始化完成。
在使用任何Firebase服務以前,您必須首先安裝firebase_core插件,該插件負責將您的應用程序鏈接到Firebase。將插件添加到您的pubspec.yaml文件中:
dependencies:
flutter:
sdk: flutter
//add this
firebase_core: "0.5.3"
複製代碼
由於firebase_core
只提供了幾個基本的功能,因此通常狀況下咱們都須要其餘插件.若是使用firebase的其餘插件,能夠不引入firebase_core
。引入其餘插件會自動引入firebase_core
,例如firebase_messaging
.
要初始化FlutterFire,請在Firebase類上調用initializeApp方法:
await Firebase.initializeApp();
複製代碼
該方法是異步的,而且返回Future,所以您須要確保它已完成,而後才能使用firebase相關功能。
示例項目顯示瞭如何使用StatefulWidget實現此目的。
目前,Firestore iOS SDK依賴於大約50萬行的大多數C ++代碼,這些代碼可能須要5分鐘以上才能在XCode中構建。爲了顯着減小構建時間,您能夠經過在Flutter項目中的ios / Podfile中添加1行來使用預編譯版本。
pod'FirebaseFirestore',: git =>'github.com/invertase/f…',: tag =>'6.26.0'
在目標Podfile中的目標「 Runner」中添加此行,例如:
# ...
target 'Runner' do
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.26.0'
# ...
end
複製代碼
此外,請確保已將cocoapods升級到1.9.1或更高版本:gem install cocoapods
有關更多信息,請參見如下問題:github.com/FirebaseExt…