felnanuke2 / flutter_google_cast

BSD 3-Clause "New" or "Revised" License
2 stars 4 forks source link

Exception on initializing CastContext: java.lang.ClassNotFoundException: GoogleCastOptionsProvider #2

Closed Gnitry closed 1 year ago

Gnitry commented 1 year ago

Hello. I have a problem with working with google cast. Tried your repository, tried to make flutter application from scratch and add your library from pub.dev - still not good result.

Steps to reproduce:

  1. Clone repository
  2. Navigate to "example" directory
  3. Execute flutter run with connected real device (Samsung A33, One UI 5.1, Android 13)
PS C:\sources\flutter_google_cast\example> flutter run
Launching lib\main.dart on SM A336E in debug mode...
Running Gradle task 'assembleDebug'...                           2,416ms
✓  Built build\app\outputs\flutter-apk\app-debug.apk.
I/le_cast_example(32275): Compiler allocated 6133KB to compile void android.view.ViewRootImpl.performTraversals()
Syncing files to device SM A336E...                                 82ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

A Dart VM Service on SM A336E is available at: http://127.0.0.1:14665/ah8d0vDgauM=/
I/flutter (32275): PlatformException(error, Failed to initialize CastContext., null, java.lang.IllegalStateException: Failed to initialize CastContext.
I/flutter (32275):      at com.google.android.gms.cast.framework.CastContext.zzg(com.google.android.gms:play-services-cast-framework@@20.1.0:11)
I/flutter (32275):      at com.google.android.gms.cast.framework.CastContext.getSharedInstance(com.google.android.gms:play-services-cast-framework@@20.1.0:4)
I/flutter (32275):      at com.felnanuke.google_cast.CastContextMethodChannel.setSharedInstance(CastContextMethodChannel.kt:84)
I/flutter (32275):      at com.felnanuke.google_cast.CastContextMethodChannel.onMethodCall(CastContextMethodChannel.kt:59)
I/flutter (32275):      at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
I/flutter (32275):      at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
I/flutter (32275):      at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
I/flutter (32275):      at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(U
I/flutter (32275): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:652:7)
I/flutter (32275): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:310:18)
I/flutter (32275): <asynchronous suspension>
I/flutter (32275): #2      GoogleCastContextAndroidMethodChannel.setSharedInstanceWithOptions (package:flutter_chrome_cast/_google_cast_context/android_google_cast_context_method_channel.dart:15:11)
I/flutter (32275): <asynchronous suspension>
E/flutter (32275): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Failed to initialize CastContext., null, java.lang.IllegalStateException: Failed to initialize CastContext.
E/flutter (32275):      at com.google.android.gms.cast.framework.CastContext.zzg(com.google.android.gms:play-services-cast-framework@@20.1.0:11)
E/flutter (32275):      at com.google.android.gms.cast.framework.CastContext.getSharedInstance(com.google.android.gms:play-services-cast-framework@@20.1.0:4)
E/flutter (32275):      at com.felnanuke.google_cast.CastContextMethodChannel.setSharedInstance(CastContextMethodChannel.kt:84)
E/flutter (32275):      at com.felnanuke.google_cast.CastContextMethodChannel.onMethodCall(CastContextMethodChannel.kt:59)
E/flutter (32275):      at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
E/flutter (32275):      at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/flutter (32275):      at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
E/flutter (32275):      at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/flutter (32275):      at android.os.Handler.handleCallback(Handler.java:942)
E/flutter (32275):      at android.os.Handler.dispatchMessage(Handler.java:99)
E/flutter (32275):      at android.os.Looper.loopOnce(Looper.java:226)
E/flutter (32275):      at android.os.Looper.loop(Looper.java:313)
E/flutter (32275):      at android.app.ActivityThread.main(ActivityThread.java:8757)
E/flutter (32275):      at java.lang.reflect.Method.invoke(Native Method)
E/flutter (32275):      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
E/flutter (32275):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
E/flutter (32275): Caused by: java.lang.ClassNotFoundException: GoogleCastOptionsProvider
E/flutter (32275):      at java.lang.Class.classForName(Native Method)
E/flutter (32275):      at java.lang.Class.forName(Class.java:454)
E/flutter (32275):      at java.lang.Class.forName(Class.java:379)
E/flutter (32275):      at com.google.android.gms.cast.framework.CastContext.zzg(com.google.android.gms:play-services-cast-framework@@20.1.0:7)
E/flutter (32275):      ... 15 more
E/flutter (32275): Caused by: java.lang.ClassNotFoundException: Didn't find class "GoogleCastOptionsProvider" on path: DexPathList[[zip file "/data/app/~~9oDxJlWt1TJLLA3BIpmJeQ==/com.felnanuke.google_cast_example-MjUNkOXmw3B9wEo2LJpJAA==/base.apk"],nativeLibraryDirectories=[/data/app/~~9oDxJlWt1TJLLA3BIpmJeQ==/com.felnanuke.google_cast_example-MjUNkOXmw3B9wEo2LJpJAA==/lib/arm64, /data/app/~~9oDxJlWt1TJLLA3BIpmJeQ==/com.felnanuke.google_cast_example-MjUNkOXmw3B9wEo2LJpJAA==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
E/flutter (32275):      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
E/flutter (32275):      at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/flutter (32275):      at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/flutter (32275):      ... 19 more
E/flutter (32275): )
E/flutter (32275): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:652:7)
E/flutter (32275): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:310:18)
E/flutter (32275): <asynchronous suspension>
E/flutter (32275): #2      GoogleCastContextAndroidMethodChannel.setSharedInstanceWithOptions (package:flutter_chrome_cast/_google_cast_context/android_google_cast_context_method_channel.dart:15:11)
E/flutter (32275): <asynchronous suspension>
E/flutter (32275):
The Flutter DevTools debugger and profiler on SM A336E is available at: http://127.0.0.1:9102?uri=http://127.0.0.1:14665/ah8d0vDgauM=/
I/BLASTBufferQueue(32275): [SurfaceView[com.felnanuke.google_cast_example/com.felnanuke.google_cast_example.MainActivity]@0#1](f:0,a:0) onFrameAvailable the first frame is available
D/SurfaceView@974b2b1(32275):  setAlpha: mUseAlpha = false alpha=1.0
D/SurfaceView@974b2b1(32275):  updateSurfaceAlpha: setUseAlpha() is not called, ignored.
I/ViewRootImpl@bc728a5[MainActivity](32275): Setup new sync id=0
I/ViewRootImpl@bc728a5[MainActivity](32275): Setting syncFrameCallback
I/ViewRootImpl@bc728a5[MainActivity](32275): registerCallbacksForSync syncBuffer=false
I/ViewRootImpl@bc728a5[MainActivity](32275): mWNT: t=0xb400007a90179fb0 mBlastBufferQueue=0xb400007ad016c1f0 fn= 1 caller= android.view.ViewRootImpl.lambda$applyTransactionOnDraw$11$android-view-ViewRootImpl:12865 android.view.ViewRootImpl$$ExternalSyntheticLambda1.onFrameDraw:4 android.graphics.HardwareRenderer$FrameDrawingCallback.onFrameDraw:924
I/ViewRootImpl@bc728a5[MainActivity](32275): Received frameDrawingCallback syncResult=0 frameNum=1.
I/ViewRootImpl@bc728a5[MainActivity](32275): Setting up sync and frameCommitCallback
D/SurfaceView@974b2b1(32275): updateSurfacePosition RenderWorker, frameNr = 1, position = [0, 0, 1080, 2265] surfaceSize = 1080x2265
I/SurfaceView@974b2b1(32275): uSP: rtp = Rect(0, 0 - 1080, 2265) rtsw = 1080 rtsh = 2265
I/SurfaceView@974b2b1(32275): onSSPAndSRT: pl = 0 pt = 0 sx = 1.0 sy = 1.0
I/SurfaceView@974b2b1(32275): aOrMT: ViewRootImpl@bc728a5[MainActivity] t = android.view.SurfaceControl$Transaction@4e81b39 fN = 1 android.view.SurfaceView.-$$Nest$mapplyOrMergeTransaction:0 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1537 android.graphics.RenderNode$CompositePositionUpdateListener.positionChanged:373
I/ViewRootImpl@bc728a5[MainActivity](32275): mWNT: t=0xb400007a9017cb90 mBlastBufferQueue=0xb400007ad016c1f0 fn= 1 caller= android.view.SurfaceView.applyOrMergeTransaction:1455 android.view.SurfaceView.-$$Nest$mapplyOrMergeTransaction:0 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1537
I/BLASTBufferQueue(32275): [ViewRootImpl@bc728a5[MainActivity]#0](f:0,a:0) onFrameAvailable the first frame is available
I/ViewRootImpl@bc728a5[MainActivity](32275): Received frameCommittedCallback lastAttemptedDrawFrameNum=1 didProduceBuffer=true
D/OpenGLRenderer(32275): CFMS:: SetUp Pid : 32275    Tid : 32295
W/Parcel  (32275): Expecting binder but got null!
I/ViewRootImpl@bc728a5[MainActivity](32275): onSyncComplete
I/ViewRootImpl@bc728a5[MainActivity](32275): setupSync seqId=0 mSyncId=0 fn=1 caller=android.view.ViewRootImpl$$ExternalSyntheticLambda11.accept:6 android.window.SurfaceSyncer.lambda$setupSync$1$android-window-SurfaceSyncer:128 android.window.SurfaceSyncer$$ExternalSyntheticLambda1.accept:8 android.window.SurfaceSyncer$SyncSet.checkIfSyncIsComplete:382 android.window.SurfaceSyncer$SyncSet.markSyncReady:359 android.window.SurfaceSyncer.markSyncReady:151 android.view.ViewRootImpl.performTraversals:4503
I/ViewRootImpl@bc728a5[MainActivity](32275): reportDrawFinished seqId=0 mSyncId=-1 fn=1 mSurfaceChangedTransaction=0xb400007a90166c90
I/ViewRootImpl@bc728a5[MainActivity](32275): MSG_WINDOW_FOCUS_CHANGED 1 0
I/ViewRootImpl@bc728a5[MainActivity](32275): mThreadedRenderer.initializeIfNeeded()#2 mSurface={isValid=true 0xb400007b601ac080}
D/InputMethodManager(32275): startInputInner - Id : 0
I/InputMethodManager(32275): startInputInner - mService.startInputOrWindowGainedFocus
D/InputMethodManager(32275): startInputInner - Id : 0

Flutter doctor:

PS C:\sources\flutter_google_cast\example> flutter doctor   
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.10.3, on Microsoft Windows [Version 10.0.22621.1778], locale en-US)
[✓] Windows Version (Installed version of Windows is version 10 or higher)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0-rc4)
[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.5.5)
[✓] Android Studio (version 2022.2)
[✓] VS Code (version 1.78.2)
[✓] Connected device (2 available)
[✓] Network resources

• No issues found!
felnanuke2 commented 1 year ago

Thank you for providing the reproducible code and addressing the issue in your package's GitHub repository. To rectify the problem with the missing update in the androidManifest.xml file, you can add the following code snippet:

<meta-data
    android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
    android:value="com.felnanuke.google_cast.GoogleCastOptionsProvider" />

Make sure to include this code within the <application> tag of your androidManifest.xml file. This addition will update the androidManifest.xml file to include the necessary <meta-data> element for com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME, using the value "com.felnanuke.google_cast.GoogleCastOptionsProvider".

After incorporating this change, the issue related to the missing update in the androidManifest.xml should be resolved.