Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android 9 (SDK 28) 이하 버전에서 위젯 전체가 검은 화면으로 렌더링되는 문제 #135

Closed
nteko opened this issue Dec 13, 2023 · 12 comments · Fixed by #153
Assignees
Labels

Comments

@nteko
Copy link

nteko commented Dec 13, 2023

설명에는 안드로이드 5.1 이상에서는 동작하는걸로 되어있는데, 9 이하에서는 뜨지 않습니다..

혹시 9이하 버전에서는 다른 방법이 있는지요?

@note11g
Copy link
Owner

note11g commented Dec 13, 2023

안녕하세요.
사용하시는 flutter, android 버전 정보, engine 정보(impeller 사용여부) 부탁드리겠습니다.

@nteko
Copy link
Author

nteko commented Dec 15, 2023 via email

@jonghyeok-lim
Copy link

flutter 3.16 이상 버전에서 발생하네요. 3.13으로 다운그레이드하면 괜찮습니다.

  • 안드로이드 os9

@nteko
Copy link
Author

nteko commented Dec 22, 2023

안드로이드 9 이하버전에서의 플루터 3.16 버전 이상 지원은 혹시 진행이 될 예정인지요...?

@note11g
Copy link
Owner

note11g commented Dec 22, 2023

@nteko @jonghyeok-lim

해당 현상에 대한 오류 로그가 따로 생성되지 않나요?
생성된다면, 오류 로그를 첨부 부탁드리겠습니다.
스크린샷도 함께 첨부해주시면 더 빠르게 대응이 가능할 것 같습니다. 감사합니다.

@johmartin
Copy link

johmartin commented Dec 22, 2023

안녕하세요? 저 또한 같은 증상이 발생하여서
혹시나 도움이 되실까해서
캡처화면 및 로그 파일 복사해서 올립니다.

플러터 3.16.5 다트 3.2.3 에서 발생하였습니다.
플러터 3.13.9 로 다운그레이드 하니 다시 잘 됩니다.

===> 오버레이의 클릭리스너가 설정되지 않았음에도, 클릭 이벤트가 발생하는 문제 #96
위의 글 올렸던 사람입니다. ^^

android9_flutternavermap12

====================================================================================

====================================================================================

D/ViewRootImpl@12f92d0MainActivity: ViewPostIme pointer 0
D/ViewRootImpl@12f92d0MainActivity: ViewPostIme pointer 1
I/PlatformViewsController(23546): Hosting view in a virtual display for platform view: 11
D/mali_winsys(23546): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(23546): eglCreateWindowSurface = 0x7027ced180, 0x70373f5010
D/Dialog (23546): mIsSamsungBasicInteraction = false
D/Dialog (23546): mIsSamsungBasicInteraction = false, isMetaDataInActivity = false
W/PlatformViewsController(23546): Unexpected platform view context for view ID 11; some functionality may not work correctly. When constructing a platform view in the factory, ensure that the view returned from PlatformViewFactory#create returns the provided context from getContext(). If you are unable to associate the view with that context, consider using Hybrid Composition instead.
I/DecorView(23546): createDecorCaptionView >> DecorView@538b283[], isFloating: false, isApplication: false, hasWindowDecorCaption: false, hasWindowControllerCallback: false
E/BufferQueueProducer(23546): [SurfaceTexture-0-23546-12] connect: already connected (cur=1 req=1)
D/InputTransport(23546): Input channel constructed: fd=148
D/ViewRootImpl@c8342f5MainActivity: setView = DecorView@538b283[MainActivity] TM=true MM=false
V/InputMethodManager(23546): Not IME target window, ignoring
D/SurfaceView(23546): onWindowVisibilityChanged(0) true com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-0,0} of ViewRootImpl@c8342f5[MainActivity]
D/ViewRootImpl@c8342f5MainActivity: dispatchAttachedToWindow
D/ViewRootImpl@c8342f5MainActivity: Relayout returned: old=[0,0][1080,1884] new=[0,0][1080,1884] result=0x7 surface={valid=true 476694245376} changed=true
D/mali_winsys(23546): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(23546): eglCreateWindowSurface = 0x7027b20100, 0x6efd30f010
D/SurfaceView(23546): show() Surface(name=SurfaceView - Sys2030:com.navermaptest.app/com.navermaptest.app.MainActivity@c8588a@0[23546])/@0x69f6b18 com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-1080,1884}
D/SurfaceView(23546): surfaceCreated 1 #8 com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-1080,1884}
D/SurfaceView(23546): surfaceChanged (1080,1884) 1 #8 com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-1080,1884}
D/mali_winsys(23546): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/ViewRootImpl@c8342f5MainActivity: Relayout returned: old=[0,0][1080,1884] new=[0,0][1080,1884] result=0x3 surface={valid=true 476694245376} changed=false
D/ViewRootImpl@c8342f5MainActivity: MSG_RESIZED: frame=Rect(0, 0 - 1080, 1884) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
D/SurfaceView(23546): onWindowVisibilityChanged(8) false com.naver.maps.map.MapView$3{c8588a V.E...... ........ 0,0-1080,1884} of ViewRootImpl@c8342f5[MainActivity]
D/SurfaceView(23546): show() Surface(name=SurfaceView - Sys2030:com.navermaptest.app/com.navermaptest.app.MainActivity@c8588a@0[23546])/@0x69f6b18 com.naver.maps.map.MapView$3{c8588a V.E...... ........ 0,0-1080,1884}
D/SurfaceView(23546): surfaceDestroyed callback.size 1 #2 com.naver.maps.map.MapView$3{c8588a V.E...... ........ 0,0-1080,1884}
W/libEGL (23546): EGLNativeWindowType 0x6efd310010 disconnect failed
D/SurfaceView(23546): destroy() Surface(name=SurfaceView - Sys2030:com.navermaptest.app/com.navermaptest.app.MainActivity@c8588a@0[23546])/@0x69f6b18 com.naver.maps.map.MapView$3{c8588a V.E...... ........ 0,0-1080,1884}
D/Dialog (23546): mIsSamsungBasicInteraction = false
D/Dialog (23546): mIsSamsungBasicInteraction = false, isMetaDataInActivity = false
W/PlatformViewsController(23546): Unexpected platform view context for view ID 0; some functionality may not work correctly. When constructing a platform view in the factory, ensure that the view returned from PlatformViewFactory#create returns the provided context from getContext(). If you are unable to associate the view with that context, consider using Hybrid Composition instead.
E/BufferQueueProducer(23546): [SurfaceTexture-0-23546-12] connect: already connected (cur=1 req=1)
I/DecorView(23546): createDecorCaptionView >> DecorView@fac20c4[], isFloating: false, isApplication: false, hasWindowDecorCaption: false, hasWindowControllerCallback: false
D/InputTransport(23546): Input channel constructed: fd=159
D/ViewRootImpl@41d972eMainActivity: setView = DecorView@fac20c4[MainActivity] TM=true MM=false
D/OpenGLRenderer(23546): eglDestroySurface = 0x7027b20100, 0x6efd30f000
D/ViewRootImpl@c8342f5MainActivity: dispatchDetachedFromWindow
D/ViewRootImpl@c8342f5MainActivity: Surface release. android.view.ViewRootImpl.doDie:7964 android.view.ViewRootImpl.die:7932 android.view.WindowManagerGlobal.removeViewLocked:497 android.view.WindowManagerGlobal.removeView:435 android.view.WindowManagerImpl.removeViewImmediate:124 android.app.Dialog.dismissDialog:518 android.app.Dialog.dismiss:501 android.app.Dialog.cancel:1462
D/InputTransport(23546): Input channel destroyed: fd=148
E/SurfaceView(23546): 13129866finished drawing but no pending report draw (extra call to draw completion runnable?)
V/InputMethodManager(23546): Not IME target window, ignoring
D/SurfaceView(23546): onWindowVisibilityChanged(0) true com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-1080,1884} of ViewRootImpl@41d972e[MainActivity]
D/ViewRootImpl@41d972eMainActivity: dispatchAttachedToWindow
D/ViewRootImpl@41d972eMainActivity: Relayout returned: old=[0,0][1080,1884] new=[0,0][1080,1884] result=0x7 surface={valid=true 476694245376} changed=true
D/mali_winsys(23546): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(23546): eglCreateWindowSurface = 0x7027b20100, 0x6efd30f010
D/SurfaceView(23546): show() Surface(name=SurfaceView - Sys2030:com.navermaptest.app/com.navermaptest.app.MainActivity@c8588a@1[23546])/@0x92a8ceb com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-1080,1884}
D/SurfaceView(23546): surfaceCreated 1 #8 com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-1080,1884}
D/SurfaceView(23546): surfaceChanged (1080,1884) 1 #8 com.naver.maps.map.MapView$3{c8588a V.E...... ......ID 0,0-1080,1884}
D/mali_winsys(23546): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/ViewRootImpl@41d972eMainActivity: Relayout returned: old=[0,0][1080,1884] new=[0,0][1080,1884] result=0x3 surface={valid=true 476694245376} changed=false
D/ViewRootImpl@41d972eMainActivity: MSG_RESIZED: frame=Rect(0, 0 - 1080, 1884) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1

@note11g
Copy link
Owner

note11g commented Dec 27, 2023

90fda47 임시로 해결하는 커밋입니다.
해당 커밋은, 지도가 두개 이상 z축 상으로 겹쳐 있을 경우, 문제가 발생할 수 있습니다. (네비게이터 스택에 남아있다면, 백그라운드로 전환된 후에 문제가 발생합니다.)
또한, SDK 26(8.0) 이상의 문제만 해결합니다.
SDK 21~25는 두개 이상 z축 상으로 겹쳐있을 경우, 백그라운드 전환 여부와 관계 없이 하단 지도가 보여집니다.

@note11g
Copy link
Owner

note11g commented Dec 27, 2023

main/master channel에서 비슷한 문제가 해결되었다는 보고가 있어, 시도해보았으나,
Flutter stable(3.16.1), main(3.18.0-18.0.pre.28) 동일 증상 확인.

확인된 관련 로그

Unexpected platform view context for view ID 0; 
some functionality may not work correctly. 
When constructing a platform view in the factory, ensure that the view returned from PlatformViewFactory#create returns the provided context from getContext(). 
If you are unable to associate the view with that context, consider using Hybrid Composition instead.

@note11g note11g self-assigned this Dec 28, 2023
@note11g note11g mentioned this issue Jan 2, 2024
note11g added a commit that referenced this issue Jan 2, 2024
@note11g
Copy link
Owner

note11g commented Jan 2, 2024

1.1.0 버전에서 임시로 #135 이슈를 수정합니다. (PR: #148)

이 PR에는 SideEffect가 포함되어 있습니다.

Known SideEffects

  • SDK 26(8.0)~28(9.0) : 지도가 두개 이상 z축 상으로 겹쳐 있을 경우, 백그라운드 전환 시, 하단 지도가 보여짐.
  • SDK 23(6.0)~25(7.1) : 지도가 두개 이상 z축 상으로 겹쳐있을 경우, 백그라운드 전환 여부와 관계 없이 하단 지도가 보여집니다.

@note11g note11g mentioned this issue Jan 2, 2024
@note11g note11g closed this as completed in 054510f Jan 2, 2024
@note11g note11g reopened this Jan 2, 2024
@note11g
Copy link
Owner

note11g commented Jan 4, 2024

main/master channel에서 비슷한 문제가 해결되었다는 보고가 있어, 시도해보았으나, Flutter stable(3.16.1), main(3.18.0-18.0.pre.28) 동일 증상 확인.

확인된 관련 로그

Unexpected platform view context for view ID 0; 
some functionality may not work correctly. 
When constructing a platform view in the factory, ensure that the view returned from PlatformViewFactory#create returns the provided context from getContext(). 
If you are unable to associate the view with that context, consider using Hybrid Composition instead.

해당 이슈는 화면이 렌더링되지 않는 것과 관련이 없는 것으로 추정됩니다.
flutter/engine#35997 해당 변경사항과 관련이 있습니다.

869466c 이 경고를 뜨지 않도록 해결하는 커밋입니다.

@note11g

This comment was marked as off-topic.

@note11g note11g changed the title 안드로이드 9 이하 버전에서 동작하지 않네요. 안드로이드 9 (SDK 28) 이하 버전에서 동작하지 않네요. Jan 5, 2024
@note11g note11g changed the title 안드로이드 9 (SDK 28) 이하 버전에서 동작하지 않네요. Android 9.0 (SDK 28) 이하 버전에서 위젯 전체가 검은 화면으로 렌더링되는 문제 Jan 5, 2024
@note11g note11g changed the title Android 9.0 (SDK 28) 이하 버전에서 위젯 전체가 검은 화면으로 렌더링되는 문제 Android 10.0 (SDK 29) 이하 버전에서 위젯 전체가 검은 화면으로 렌더링되는 문제 Jan 5, 2024
@note11g note11g changed the title Android 10.0 (SDK 29) 이하 버전에서 위젯 전체가 검은 화면으로 렌더링되는 문제 Android 9 (SDK 28) 이하 버전에서 위젯 전체가 검은 화면으로 렌더링되는 문제 Jan 5, 2024
note11g added a commit that referenced this issue Jan 5, 2024
@note11g note11g linked a pull request Jan 5, 2024 that will close this issue
@note11g
Copy link
Owner

note11g commented Jan 5, 2024

#153 PR은 해당 이슈를 해결합니다.
자세한 내용은 PR 코멘트와, #152 이슈를 참고하세요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Development

Successfully merging a pull request may close this issue.

4 participants