Skip to content

[Platform view] Flutter 3.16 regression - Virtual display platform view is invisible on Android < 10 #141068

@timbotimbo

Description

@timbotimbo

Description

I updated an app from Flutter 3.7.12 to 3.16.5, but afterwards the platform view created by the flutter_unity_widget plugin was always invisible on some Android devices.
This widget uses an AndroidView, which falls back to VirtualDisplay mode because of a SurfaceView.

Based on the logs I can see that even though it is invisible, the widget is active and can accept touch input.

It only seems to happen on lower android versions, and does not show any clear errors in the flutter debug console.

Bug Compatibility

Combine flutter >3.13.9 and Android <10.

Flutter versions Android devices with Fluttter >3.13.9
Flutter version Widget visible
3.7.12
3.10.6
3.13.9
3.14.0-0.2.pre
3.15.0-15.2.pre
3.16.0
3.16.5
Device Android version Widget visible
Samsung Galaxy S20Fe 13
Pixel XL emulator x86 11
Pixel XL emulator x86 10
Samsung Galaxy S8 9
Pixel XL emulator x86 9
Wileyfox Swift 7.2.1
Samsung Galaxy J5 6

Blame

Checking the commits on the master branch, the issue starts at 86c8abf

Roll Flutter Engine from c902fec1e3ce to 204625490ca1 (1 revision) (#130962)

Which includes this pull request flutter/engine#43813 by @johnmccutchan.

Add a PlatformViewRenderTarget abstraction

Code sample

A reproduction project can be found in this repo https://github.com/timbotimbo/flutter_fuw_reproduction_android.
The Unity export located in android/unityLibrary adds roughly ~106MB to the regular Flutter project.
Unity was exported and tested on windows, but should work on other platforms.

The relevant Flutter code in main.dart is basically just this:

Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.blue,
      ),
      body: Container(
        color: Colors.white,
        child: _enabled
            ? Container(
                // red background only shows when UnityWidget is transparent/invisible
                color: Colors.red,
                child: UnityWidget(
                  onUnityCreated: (controller) => {},
                ),
              )
            : null,
      ),

[UPDATE]
The flutter_embed_unity branch now contains the same example, using a different and newer Flutter plugin.
I've added this alternative to rule out plugin specific code.

Steps to reproduce

I recommend to reproduce this on a real Android device or an ARM Android emulator (On Apple silicon).
Running on an x86 android emulator has issues and might crash. (see screenshot below)

  1. Download or clone the repo linked under code sample
  2. Run the flutter application on Android.
  3. Click the 'Toggle' button to make Unity show up.
  4. You should see a rotating cube. (or a purple shader screen on x86 emulators)
  5. Repeat this using different Flutter and Android versions. It shows nothing when using both Android <10 and Flutter >3.13.9.

Expected result

The platform view should show up and render a rotating cube just like on Fluttter <= 3.13.9.
Flutter 3.16 shouldn't break anything that worked before without deprecating or documenting it.

Actual result

The platform view never becomes visible on Android devices below Android 10.

Screenhots or Video

Samsung Galaxy S8 recordings on 2 flutter versions:

3.13.9 Visible 3.16.5 Invisible
3.13.9.mp4
3.16.5.mp4

x86 Android emulator

If you get a warning dialog, just click continue.
This is what Unity will look like on my x86 emulator when this bug does NOT happen.
Just so you know what to expect.
(Unity doesn't support x86 android, this is exported in ChromeOS mode)

Warning Unity appears with render errors

Logs

These are the logs on the flutter console, after pressing 'Toggle' in the reproduction example.

Flutter 3.13.9, Galaxy S8
D/ViewRootImpl@5db80ed[MainActivity](19449): ViewPostIme pointer 0
D/ViewRootImpl@5db80ed[MainActivity](19449): ViewPostIme pointer 1
I/IL2CPP  (19449): JNI_OnLoad
D/FlutterUnityController(19449): Attaching unity to view
D/FlutterUnityController(19449): onCreate
D/FlutterUnityController(19449): onResume
I/PlatformViewsController(19449): Hosting view in a virtual display for platform view: 0
D/Dialog  (19449): mIsSamsungBasicInteraction = false
D/Dialog  (19449): mIsSamsungBasicInteraction = false, isMetaDataInActivity = false
I/DecorView(19449): createDecorCaptionView >> DecorView@36ecf00[], isFloating: false, isApplication: false, hasWindowDecorCaption: false, hasWindowControllerCallback: false
D/InputTransport(19449): Input channel constructed: fd=109
D/ViewRootImpl@53f738a[MainActivity](19449): setView = DecorView@36ecf00[MainActivity] TM=true MM=false
D/ViewRootImpl@5db80ed[MainActivity](19449): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false
V/InputMethodManager(19449): Not IME target window, ignoring
I/CustomUnityPlayer(19449): onAttachedToWindow
D/SurfaceView(19449): onWindowVisibilityChanged(0) true android.view.SurfaceView{b293e56 VFE...... ......I. 0,0-0,0 #0} of ViewRootImpl@53f738a[MainActivity]
D/ViewRootImpl@53f738a[MainActivity](19449): dispatchAttachedToWindow
D/ViewRootImpl@53f738a[MainActivity](19449): Relayout returned: old=[0,0][720,1224] new=[0,0][720,1224] result=0x7 surface={valid=true 484183609344} changed=true
D/mali_winsys(19449): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(19449): eglCreateWindowSurface = 0x70d2e4eb80, 0x70bb979010
D/SurfaceView(19449): show() Surface(name=SurfaceView - Sys2030:com.example.example/com.example.example.MainActivity@b293e56@0[19449])/@0xe11eed7 android.view.SurfaceView{b293e56 VFE...... ......ID 0,0-720,1224 #0}
D/SurfaceView(19449): surfaceCreated 1 #8 android.view.SurfaceView{b293e56 VFE...... ......ID 0,0-720,1224 #0}
D/SurfaceView(19449): surfaceChanged (720,1224) 1 #8 android.view.SurfaceView{b293e56 VFE...... ......ID 0,0-720,1224 #0}
I/Unity   (19449): MemoryManager: Using 'Dynamic Heap' Allocator.
W/example.exampl(19449): Accessing hidden method Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;I)V (light greylist, reflection)
D/ViewRootImpl@53f738a[MainActivity](19449): Relayout returned: old=[0,0][720,1224] new=[0,0][720,1224] result=0x3 surface={valid=true 484183609344} changed=false
[log] *********************************************
[log] ** flutter unity controller setup complete **
[log] *********************************************
D/ViewRootImpl@53f738a[MainActivity](19449): MSG_RESIZED: frame=Rect(0, 0 - 720, 1224) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
I/Unity   (19449): SystemInfo CPU = ARM64 FP ASIMD AES, Cores = 8, Memory = 3679mb
I/Unity   (19449): SystemInfo ARM big.LITTLE configuration: 4 big (mask: 0xf0), 4 little (mask: 0xf)
I/Unity   (19449): ApplicationInfo com.example.example version 1.0.0
I/Unity   (19449): Built from '2021.3/staging' branch, Version '2021.3.31f1 (3409e2af086f)', Build type 'Release', Scripting Backend 'il2cpp', CPU 'arm64-v8a', Stripping 'Enabled'
E/SchedPolicy(19449): set_timerslack_ns write failed: Operation not permitted
I/chatty  (19449): uid=11291(com.example.example) UnityMain identical 14 lines
E/SchedPolicy(19449): set_timerslack_ns write failed: Operation not permitted
D/ViewRootImpl@5db80ed[MainActivity](19449): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false
I/Unity   (19449): Company Name: example
I/Unity   (19449): Product Name: flutterunitywidgets
D/mali_winsys(19449): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/Unity   (19449):  GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_
D/Unity   (19449): to_texture GL_EXT_multisampled_render_to_texture2 GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_sh
D/Unity   (19449): ader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_protected_textures GL_EXT_buffer_storage GL_EXT_external_buffer GL_EXT_EGL_image_array
D/        (19449): PlayerBase::PlayerBase()
D/        (19449): TrackPlayerBase::TrackPlayerBase()
I/libOpenSLES(19449): Emulating old channel mask behavior (ignoring positional mask 0x3, using default mask 0x3 based on channel count of 2)
W/AudioTrack(19449): notificationFrames=-21 clamped to the range -1 to -8
I/AudioTrack(19449): AUDIO_OUTPUT_FLAG_FAST successful; frameCount 0 -> 1536
I/AudioTrack(19449): updateAudioTranstionLength FadeIn[0] FadeOut[0] FadeInRing[0]
W/libEGL  (19449): EGLNativeWindowType 0x70bb8ff010 disconnect failed
D/mali_winsys(19449): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/ViewRootImpl@5db80ed[MainActivity](19449): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false
V/MediaRouter(19449): Adding route: RouteInfo{ name=Phone, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
V/MediaRouter(19449): Selecting route: RouteInfo{ name=Phone, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
D/ViewRootImpl@5db80ed[MainActivity](19449): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false
Flutter 3.13.9, Galaxy S8
D/ViewRootImpl@e330b96[MainActivity](18543): ViewPostIme pointer 0
D/ViewRootImpl@e330b96[MainActivity](18543): ViewPostIme pointer 1
I/IL2CPP  (18543): JNI_OnLoad
D/FlutterUnityController(18543): Attaching unity to view
D/FlutterUnityController(18543): onCreate
D/FlutterUnityController(18543): onResume
I/PlatformViewsController(18543): Hosting view in a virtual display for platform view: 0
D/mali_winsys(18543): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(18543): eglCreateWindowSurface = 0x70d2f60500, 0x70d2df7010
D/Dialog  (18543): mIsSamsungBasicInteraction = false
D/Dialog  (18543): mIsSamsungBasicInteraction = false, isMetaDataInActivity = false
I/DecorView(18543): createDecorCaptionView >> DecorView@64e6d94[], isFloating: false, isApplication: false, hasWindowDecorCaption: false, hasWindowControllerCallback: false
E/BufferQueueProducer(18543): [SurfaceTexture-0-18543-0] connect: already connected (cur=1 req=1)
D/InputTransport(18543): Input channel constructed: fd=105
D/ViewRootImpl@2d4fd7e[MainActivity](18543): setView = DecorView@64e6d94[MainActivity] TM=true MM=false
D/ViewRootImpl@e330b96[MainActivity](18543): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false
V/InputMethodManager(18543): Not IME target window, ignoring
I/CustomUnityPlayer(18543): onAttachedToWindow
D/SurfaceView(18543): onWindowVisibilityChanged(0) true android.view.SurfaceView{53f738a VFE...... ......I. 0,0-0,0 #0} of ViewRootImpl@2d4fd7e[MainActivity]
D/ViewRootImpl@2d4fd7e[MainActivity](18543): dispatchAttachedToWindow
D/ViewRootImpl@2d4fd7e[MainActivity](18543): Relayout returned: old=[0,0][720,1224] new=[0,0][720,1224] result=0x7 surface={valid=true 484571402240} changed=true
D/mali_winsys(18543): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(18543): eglCreateWindowSurface = 0x70d2f60600, 0x70d2b4d010
D/SurfaceView(18543): show() Surface(name=SurfaceView - Sys2030:com.example.example/com.example.example.MainActivity@53f738a@0[18543])/@0x7f46dfb android.view.SurfaceView{53f738a VFE...... ......ID 0,0-720,1224 #0}
D/SurfaceView(18543): surfaceCreated 1 #8 android.view.SurfaceView{53f738a VFE...... ......ID 0,0-720,1224 #0}
D/SurfaceView(18543): surfaceChanged (720,1224) 1 #8 android.view.SurfaceView{53f738a VFE...... ......ID 0,0-720,1224 #0}
[log] *********************************************
I/Unity   (18543): MemoryManager: Using 'Dynamic Heap' Allocator.
[log] ** flutter unity controller setup complete **
[log] *********************************************
W/example.exampl(18543): Accessing hidden method Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;I)V (light greylist, reflection)
D/ViewRootImpl@2d4fd7e[MainActivity](18543): Relayout returned: old=[0,0][720,1224] new=[0,0][720,1224] result=0x3 surface={valid=true 484571402240} changed=false
D/ViewRootImpl@2d4fd7e[MainActivity](18543): MSG_RESIZED: frame=Rect(0, 0 - 720, 1224) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
I/Unity   (18543): SystemInfo CPU = ARM64 FP ASIMD AES, Cores = 8, Memory = 3679mb
I/Unity   (18543): SystemInfo ARM big.LITTLE configuration: 4 big (mask: 0xf0), 4 little (mask: 0xf)
I/Unity   (18543): ApplicationInfo com.example.example version 1.0.0
I/Unity   (18543): Built from '2021.3/staging' branch, Version '2021.3.31f1 (3409e2af086f)', Build type 'Release', Scripting Backend 'il2cpp', CPU 'arm64-v8a', Stripping 'Enabled'
2
D/ViewRootImpl@e330b96[MainActivity](18543): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false
E/SchedPolicy(18543): set_timerslack_ns write failed: Operation not permitted
I/Unity   (18543): Company Name: example
I/Unity   (18543): Product Name: flutterunitywidgets
D/mali_winsys(18543): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/Unity   (18543):  GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_
D/Unity   (18543): to_texture GL_EXT_multisampled_render_to_texture2 GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_sh
D/Unity   (18543): ader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_protected_textures GL_EXT_buffer_storage GL_EXT_external_buffer GL_EXT_EGL_image_array
I/chatty  (18543): uid=11291(com.example.example) UnityMain identical 14 lines

E/SchedPolicy(18543): set_timerslack_ns write failed: Operation not permitted
D/        (18543): PlayerBase::PlayerBase()
D/        (18543): TrackPlayerBase::TrackPlayerBase()
I/libOpenSLES(18543): Emulating old channel mask behavior (ignoring positional mask 0x3, using default mask 0x3 based on channel count of 2)
W/AudioTrack(18543): notificationFrames=-21 clamped to the range -1 to -8
I/AudioTrack(18543): AUDIO_OUTPUT_FLAG_FAST successful; frameCount 0 -> 1536
I/AudioTrack(18543): updateAudioTranstionLength FadeIn[0] FadeOut[0] FadeInRing[0]
W/libEGL  (18543): EGLNativeWindowType 0x70ca024010 disconnect failed
D/mali_winsys(18543): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/ViewRootImpl@e330b96[MainActivity](18543): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false
V/MediaRouter(18543): Adding route: RouteInfo{ name=Phone, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
V/MediaRouter(18543): Selecting route: RouteInfo{ name=Phone, description=null, status=null, category=RouteCategory{ name=System types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
D/ViewRootImpl@e330b96[MainActivity](18543): Relayout returned: old=[0,0][720,1480] new=[0,0][720,1480] result=0x1 surface={valid=true 485103816704} changed=false

Flutter Doctor output

flutter doctor on 3.16.5
[√] Flutter (Channel stable, 3.16.5, on Microsoft Windows [Version 10.0.19045.3803], locale en-NL)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Community 2019 16.11.21)
[!] Android Studio (version 2022.2)
    X Unable to determine bundled Java version.
[√] Android Studio (version 2022.3)
[√] VS Code (version 1.85.1)
[√] Connected device (3 available)
[√] Network resources

! Doctor found issues in 1 category.

Metadata

Metadata

Assignees

Labels

c: regressionIt was better in the past than it is nowe: OS-version specificAffects only some versions of the relevant operating systemfound in release: 3.16Found to occur in 3.16found in release: 3.18Found to occur in 3.18has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-androidAndroid applications specificallyplatform-views: vdIssues specific to the Android VirtualDisplay platform views backendr: fixedIssue is closed as already fixed in a newer versionteam-androidOwned by Android platform team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions