I'm working on a flutter project and I am on the stable version of flutter and I've updated to the latest stable version 1.17 and after the update, my app crashes after building and running the app and the first part of the output of the crash log is this.
[ +589 ms] W/FlutterEnginePluginRegistry( 4594): Attempted to register plugin (io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry$ShimRegistrarAggregate@3e8e5e0a) but it
was already registered with this FlutterEngine (io.flutter.embedding.engine.FlutterEngine@901467b).
[ +1 ms] W/FlutterEnginePluginRegistry( 4594): Attempted to register plugin (com.ryanheise.audioservice.AudioServicePlugin@3726ac98) but it was already registered with this
FlutterEngine (io.flutter.embedding.engine.FlutterEngine@901467b).
and here are the errors:
[ +8 ms] E/CrashlyticsCore(11221): Failed to execute task.
[ ] E/CrashlyticsCore(11221): java.util.concurrent.TimeoutException
[ ] E/CrashlyticsCore(11221): at java.util.concurrent.FutureTask.get(FutureTask.java:176)
[ +1 ms] E/CrashlyticsCore(11221): at
com.crashlytics.android.core.CrashlyticsBackgroundWorker.submitAndWait(CrashlyticsBackgroundWorker.java:41)
[ +1 ms] E/CrashlyticsCore(11221): at
com.crashlytics.android.core.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:321)
[ +1 ms] E/CrashlyticsCore(11221): at
com.crashlytics.android.core.CrashlyticsController$6.onUncaughtException(CrashlyticsController.java:301)
[ +1 ms] E/CrashlyticsCore(11221): at
com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:42)
[ +6 ms] E/CrashlyticsCore(11221): at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
[ +1 ms] E/CrashlyticsCore(11221): at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
[ ] E/AndroidRuntime(11221): FATAL EXCEPTION: main
[ ] E/AndroidRuntime(11221): Process: com.domain.app.debug, PID: 11221
[ ] E/AndroidRuntime(11221): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.domain.app.debug/com.domain.app.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface
method 'void io.flutter.plugin.common.BinaryMessenger.setMessageHandler(java.lang.String,
io.flutter.plugin.common.BinaryMessenger$BinaryMessageHandler)' on a null object reference
[ +1 ms] E/AndroidRuntime(11221): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
[ ] E/AndroidRuntime(11221): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
[ ] E/AndroidRuntime(11221): at android.app.ActivityThread.access$800(ActivityThread.java:151)
[ ] E/AndroidRuntime(11221): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
[ ] E/AndroidRuntime(11221): at android.os.Handler.dispatchMessage(Handler.java:102)
[ ] E/AndroidRuntime(11221): at android.os.Looper.loop(Looper.java:135)
[ ] E/AndroidRuntime(11221): at android.app.ActivityThread.main(ActivityThread.java:5254)
[ ] E/AndroidRuntime(11221): at java.lang.reflect.Method.invoke(Native Method)
[ ] E/AndroidRuntime(11221): at java.lang.reflect.Method.invoke(Method.java:372)
[ +1 ms] E/AndroidRuntime(11221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
[ +7 ms] E/AndroidRuntime(11221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
[ +1 ms] E/AndroidRuntime(11221): Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void
io.flutter.plugin.common.BinaryMessenger.setMessageHandler(java.lang.String,
io.flutter.plugin.common.BinaryMessenger$BinaryMessageHandler)' on a null object reference
[ +1 ms] E/AndroidRuntime(11221): at io.flutter.plugin.common.MethodChannel.setMethodCallHandler(MethodChannel.java:116)
[ ] E/AndroidRuntime(11221): at xyz.luan.audioplayers.AudioplayersPlugin.<init>(AudioplayersPlugin.java:36)
[ ] E/AndroidRuntime(11221): at xyz.luan.audioplayers.AudioplayersPlugin.registerWith(AudioplayersPlugin.java:31)
[ ] E/AndroidRuntime(11221): at
io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:19)
[ +1 ms] E/AndroidRuntime(11221): at com.domain.app.MainActivity.configureFlutterEngine(MainActivity.kt:34)
[ ] E/AndroidRuntime(11221): at
io.flutter.embedding.android.FlutterFragment.configureFlutterEngine(FlutterFragment.java:944)
[ +1 ms] E/AndroidRuntime(11221): at
io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:178)
[ +12 ms] E/AndroidRuntime(11221): at io.flutter.embedding.android.FlutterFragment.onAttach(FlutterFragment.java:578)
[ +1 ms] E/AndroidRuntime(11221): at androidx.fragment.app.Fragment.performAttach(Fragment.java:2672)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentStateManager.attach(FragmentStateManager.java:263)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1170)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1255)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentTransition.calculateFragments(FragmentTransition.java:1138)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentTransition.startTransitions(FragmentTransition.java:136)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1989)
[ ] E/AndroidRuntime(11221): at
androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
[ +6 ms] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)[ ] E/AndroidRuntime(11221): at
androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
[ ] E/AndroidRuntime(11221): at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
[ +1 ms] E/AndroidRuntime(11221): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
[ ] E/AndroidRuntime(11221): at android.app.Activity.performStart(Activity.java:6006)
[ ] E/AndroidRuntime(11221): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
this is my main activity:
package com.domain.app
import android.content.Context
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
import android.view.WindowManager.LayoutParams;
import io.flutter.embedding.engine.dart.DartExecutor
import android.view.KeyEvent
import android.util.Log
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
class MainActivity : FlutterFragmentActivity() {
var handleKeys: Boolean = false
var methodChannel: MethodChannel? = null;
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine)
// No screenshots unless enabled
val sharedPreferences = getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE);
val canShot = sharedPreferences.getBoolean("flutter.screenshot", false);
if (!canShot)
getWindow().addFlags(LayoutParams.FLAG_SECURE)
methodChannel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "com.domain.app/keyboard")
methodChannel?.setMethodCallHandler { call, result ->
if (call.method == "setScreenName") {
val arg = call.arguments.toString();
handleKeys = arg == "ebook_screen";
} else {
result.notImplemented()
}
}
}
override fun provideFlutterEngine(context: Context): FlutterEngine {
// Instantiate a FlutterEngine.
val flutterEngine = FlutterEngine(context.applicationContext)
// Start executing Dart code to pre-warm the FlutterEngine.
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
return flutterEngine
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (event?.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN ||
event?.getKeyCode() == KeyEvent.KEYCODE_SPACE ||
event?.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) {
if (handleKeys) {
methodChannel?.invokeMethod("onKeyDown", event?.getKeyCode().toString())
return true;
} else
return super.onKeyDown(keyCode, event)
} else {
return super.onKeyDown(keyCode, event)
}
}
}
This is my GeneratedPluginRegistrant.java file:
package io.flutter.plugins;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
/**
* Generated file. Do not edit.
* This file is generated by the Flutter tool based on the
* plugins that support the Android platform.
*/
@Keep
public final class GeneratedPluginRegistrant {
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
flutterEngine.getPlugins().add(new com.ryanheise.audioservice.AudioServicePlugin());
xyz.luan.audioplayers.AudioplayersPlugin.registerWith(shimPluginRegistry.registrarFor("xyz.luan.audioplayers.AudioplayersPlugin"));
flutterEngine.getPlugins().add(new io.flutter.plugins.connectivity.ConnectivityPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.deviceinfo.DeviceInfoPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.firebaseanalytics.FirebaseAnalyticsPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.crashlytics.firebasecrashlytics.FirebaseCrashlyticsPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin());
flutterEngine.getPlugins().add(new com.pichillilorenzo.flutter_inappwebview.InAppWebViewFlutterPlugin());
flutterEngine.getPlugins().add(new com.rmawatson.flutterisolate.FlutterIsolatePlugin());
io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin.registerWith(shimPluginRegistry.registrarFor("io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin"));
de.gigadroid.flutterudid.FlutterUdidPlugin.registerWith(shimPluginRegistry.registrarFor("de.gigadroid.flutterudid.FlutterUdidPlugin"));
io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin.registerWith(shimPluginRegistry.registrarFor("io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin"));
flutterEngine.getPlugins().add(new io.flutter.plugins.googlesignin.GoogleSignInPlugin());
flutterEngine.getPlugins().add(new vn.hunghd.flutter.plugins.imagecropper.ImageCropperPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.imagepicker.ImagePickerPlugin());
com.zaihui.installplugin.InstallPlugin.registerWith(shimPluginRegistry.registrarFor("com.zaihui.installplugin.InstallPlugin"));
flutterEngine.getPlugins().add(new io.flutter.plugins.localauth.LocalAuthPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.packageinfo.PackageInfoPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
flutterEngine.getPlugins().add(new com.baseflow.permissionhandler.PermissionHandlerPlugin());
flutter.plugins.screen.screen.ScreenPlugin.registerWith(shimPluginRegistry.registrarFor("flutter.plugins.screen.screen.ScreenPlugin"));
flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin());
flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.videoplayer.VideoPlayerPlugin());
flutterEngine.getPlugins().add(new creativecreatorormaybenot.wakelock.WakelockPlugin());
flutterEngine.getPlugins().add(new io.flutter.plugins.webviewflutter.WebViewFlutterPlugin());
}
}
And these are my dependencies:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
path_provider: ^1.6.7
permission_handler: ^5.0.0+hotfix.5
flutter_cupertino_localizations: ^1.0.1
#flutter_secure_storage: ^3.3.3
dio: ^3.0.9
dio_http2_adapter: ^1.0.0
archive: ^2.0.11
percent_indicator: ^2.1.3
flutter_widget_from_html: ^0.3.3+3
google_sign_in: ^4.4.4
fluttertoast: ^4.0.1
package_info: ^0.4.0+17
intl_translation: ^0.17.9 # Because every version of flutter_test from sdk depends on petitparser 2.4.0 and intl_translation >=0.17.10 depends on petitparser ^3.0.0, flutter_test from sdk is incompatible with intl_translation >=0.17.10.
local_auth: ^0.6.2+1
shared_preferences: ^0.5.7+1
sqflite: ^1.3.0+1
flutter_sticky_header: ^0.4.2
matrix_gesture_detector: ^0.1.0
http: ^0.12.1
cupertino_icons: ^0.1.3
extended_image: ^0.7.3+1
extended_image_library: ^0.2.3
provider: ^4.1.0
connectivity: ^0.4.8+5
url_launcher: ^5.4.5
image_picker: ^0.6.6+1
flutter_inappwebview:
git:
url: https://github.com/pichillilorenzo/flutter_inappwebview.git
ref: master
flutter_bloc: ^4.0.0
equatable: ^1.1.1
audioplayers: ^0.15.1
rxdart: ^0.24.0
flutter_widgets: ^0.1.12
intl: ^0.16.1
jalali_date: ^0.1.5
encrypt: ^4.0.1
pointycastle: ^1.0.2
firebase_messaging: ^6.0.13
flushbar: ^1.10.2
html_unescape: ^1.0.1+3
photo_view: ^0.9.2
dart2_constant: ^1.0.2+dart2
audio_service: ^0.8.0
firebase_analytics: ^5.0.11
firebase_crashlytics: ^0.1.3+3
screen: ^0.0.5
install_plugin: ^2.0.1
device_info: ^0.4.2+3
flutter_udid: ^1.0.1
any hint or idea where should I start looking to debug this issue?