обновление flutter 1.17 android сбой - PullRequest
1 голос
/ 09 мая 2020

Я работаю над проектом flutter и использую стабильную версию flutter, и я обновился до последней стабильной версии 1.17, и после обновления мое приложение вылетает после сборки и запуска приложения и первой части вывод журнала cra sh следующий.

[ +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).

и вот ошибки:

[   +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)

это мое основное действие:

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)
        }
    }
}

Это мой GeneratedPluginRegistrant.java файл:

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());
  }
}

И это мои зависимости:

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

любой намек или идея, с чего мне начать поиск, чтобы отладить эту проблему?

1 Ответ

1 голос
/ 12 мая 2020

Я удалил эту строку из Android MainActivity

 GeneratedPluginRegistrant.registerWith(flutterEngine)

, и cra sh исчез. Благодаря @Mariano Zorrilla я нашел это решение.

...