엄코딩의 개발 일지

문제 상황

 

어제 기분 좋게 7마켓에 모두 빌드를 올리고, 오전에 모든 마켓에서 release 되었습니다.

 

하지만...

 

 

Fabric에 처음 보는 에러가 날라왔습니다.(긴장..)

 

에러 문구

 

Only fullscreen opaque activities can request orientation

 

해결 방법

문제 상황을 인지하고, 구글링을 시도했습니다.

 

제일 먼저 눈에 띄었던 박상권님의 블로그를 보며 이해할 수 있었습니다.

 

( 상권님의 에러 대응 방법도 배우게되었습니다. 감사합니다.

 

에러는 투명한 Activity를 만들기 위해 style에서 사용한 windowIsTranslucent 때문에 발생합니다.

 

저도 안드로이드 8.0 ( Oreo ) API 26 SDK에서 코드를 봤습니다. ( 사실 이렇게 구글 SDK 코드를 보는 건 처음이었습니다. )

 

if (getApplicationInfo().targetSdkVersion > O && mActivityInfo.isFixedOrientation()) {
            final TypedArray ta = obtainStyledAttributes(com.android.internal.R.styleable.Window);
            final boolean isTranslucentOrFloating = ActivityInfo.isTranslucentOrFloating(ta);
            ta.recycle();
            if (isTranslucentOrFloating) {
                throw new IllegalStateException(
                        "Only fullscreen opaque activities can request orientation");
            }
        }

 

정말 이런 코드가 있었습니다. 제가 정말 맞게 공부하고 있었는가 의문이 들었습니다. 이렇게 명료하게 에러 이유를 볼 수 있었다니...!

 

이 문제의 해결방법으로는 orientation을 설정하지 않는 방법, style v26 따로 두는 방법, sdk버전이 안드로이드 오레오일 경우 예외처리, 그리고 코드상으로 orientation을 설정하고 이에 try/catch로 감싸는 방법이 있었습니다.

 

저는 BaseActivity에 아래와 같은 코드를 추가했습니다.

 try{
            //API 8.0 Only fullscreen opaque activities can request orientation 안드로이드 이슈.
            requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
        }catch (e : IllegalStateException){

        }

 

그리고 AndroidManifest에 있는 모든 orientation을 지워줬습니다.

 

실행 결과 잘 작동합니다.