【发布时间】:2022-11-17 18:44:20
【问题描述】:
我正在使用 flutter sdk 3.3.5 和火力机器人
firebase_core: 2.1.1 firebase_crashlytics:3.0.4 firebase_messaging:14.0.3
我在我的项目中使用 firebase 消息传递 在我的情况下,它在调试状态下工作正常 我从 google play 添加了 SHA-1 和 SHA-256 并添加了谷歌服务
它在调试模式下工作正常并给我 firebase 令牌并从 firebase 控制台测试它并且工作正常
这是我的 androidmanifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.initiummesolutions.hr_max">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<application
android:label="HR Max"
android:icon="@mipmap/launcher_icon">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"
android:exported="true">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
我的 mainActivity.java 是空的
package com.initiummesolutions.hr_max;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}
我的应用程序/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: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 33
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.initiummesolutions.hr_max"
minSdkVersion 21
targetSdkVersion 33
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
buildToolsVersion "30.0.2"
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
dependencies {
implementation 'androidx.work:work-runtime-ktx:2.7.0'
implementation platform('com.google.firebase:firebase-bom:31.0.3')
}
flutter {
source '../..'
}
没有 kotline 文件..
我应该怎么办?
我尝试过了: 删除 google-services.json 重新下载 这是在发布模式下运行时打印的内容
W/FlutterJNI(20984):多次调用 FlutterJNI.init E/flutter (20984): [ERROR:flutter/runtime/dart_isolate.cc(668)] 无法解析主入口函数。 E/flutter (20984): [ERROR:flutter/runtime/dart_isolate.cc(168)] 无法运行 run main Dart 入口点。 E/flutter (20984): [ERROR:flutter/runtime/runtime_controller.cc(396)] 无法创建根隔离。 E/flutter (20984): [ERROR:flutter/shell/common/shell.cc(606)] 无法使用配置启动引擎。 E/flutter (20984): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] 未处理的异常:[firebase_messaging/unknown] java.io.IOException: FIS_AUTH_ERROR E/flutter (20984): #0 StandardMethodCodec.decodeEnvelope (包:flutter/src/services/message_codecs.dart:653) E/flutter (20984): #1 MethodChannel._invokeMethod (包:flutter/src/services/platform_channel.dart:315) E/颤动(20984): E/flutter (20984): #2 MethodChannel.invokeMapMethod (包:flutter/src/services/platform_channel.dart:518) E/颤动(20984): E/flutter (20984):#3 MethodChannelFirebaseMessaging.getToken(包:firebase_messaging_platform_interface/src/method_channel/method_channel_messaging.dart:224) E/颤动(20984): E/flutter (20984): #4 FireBaseMessagingService.init (package:hr_max/Helpers/firebase_messaging_services.dart:44) E/颤动(20984): E/flutter (20984): #5 GetInstance.putAsync (包:get/get_instance/src/get_instance.dart:62) E/颤动(20984): E/flutter (20984):#6 MyApp.build。 (包:hr_max/main.dart:158) E/颤动(20984):
【问题讨论】:
-
您是否在发布模式下创建了 SHA-1 和 SHA-256,然后将它们添加到 firebase?
-
@ZakariaHossain 我添加了 SHA-1 和 256 fior:调试、发布和 google play 商店
标签: android flutter firebase firebase-cloud-messaging