For all the girls I loved
是因为android studio 新版本 , in my case is : 3.5.2
把 support.v4 这个package 集合到 Androidx ,
而
1 |
import 'package:fluttertoast/fluttertoast.dart'; |
用到了
解决方法是: 不再引用 fluttertoast 插件
或者也可以用旧版小于android 23 的sdk ,但不知如何换用旧版
是因为当引用 firebase 时, 因为google firebase 所定义的method太多 ,所以需要app 支持 multidex
解决方法是: 在app级 build.gradle 文件dependencies 加上 :
1 |
implementation 'com.android.support:multidex:1.0.3' |
defaultConfig 加上 :
1 |
multiDexEnabled true |
完整文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
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: 'com.google.gms.google-services' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 28 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.newvoicechat" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 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" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation 'com.android.support:multidex:1.0.3' } |
manifes 文件加:
1 2 3 |
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> |
https://firebase.google.com/docs/android/setup
To send a message to a specific device, you need to know that device’s registration token (注册令牌)
先阅读flutter route 的 文档 : https://flutter.dev/docs/cookbook/navigation
这个似乎不对
另一种方法:
上面的解决方法中 ,这个消息怎么发 :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
DATA='{ "notification": { "body": "this is a body", "title": "this is a title" }, "data": { "click_action": "FLUTTER_NOTIFICATION_CLICK", "sound": "default", "status": "done", "screen": "screenA", }, "to": "<FCM TOKEN>" }' |
2020-4-2
1 : 按照官方文档 :https://firebase.google.com/docs/flutter/setup
除了。Cloud Messaging , 其他都可以用 iOS simulator 测试
2: 在 firebase 新建项目 , 用 flutter—-》 iOS 的 bundle id 和 此项目绑定在一起
3 : 完成后下载。GoogleService-Info.plist 文件 , 然后用 Xcode 打开。/flutter/iOS/runner.xcworkspace , 把 plist 文件添加到。runner/runner 下面。
4: 安装。cocoapods。 这是一个ruby程序, 用来下载google firebase 需要的插件
1 |
sudo gem install cocoapods -v 1.7.5 |
1 |
pod setup |
这2个命令用时很长 , in my case , 3小时以上
5 用 vscode 打开flutter 程序。 在 pubspec.yaml 文件增加新的package
1 2 3 |
firebase_core: ^0.4.0+9 firebase_auth: ^0.14.0+5 cloud_firestore: ^0.12.9+5 |
保存后等待 flutter 自动完成 flutter pub get 的工作。 get完成后 会自动生成 podfile文件。
6。此时即可执行。flutter run
7 如果安装 grpc 时间过长 , 可以
I resolved it by deleting all the cache related to gRPC at /Users/<user>/Library/Caches/CocoaPods/Pods/Release/
and .../Specs/Release/
, and running pod install
again.