에르노트

Unable to start activity ComponentInfo{}: java.lang.RuntimeException: A TaskDescription's primary color should be opaque 오류 해결 본문

Dev/Android

Unable to start activity ComponentInfo{}: java.lang.RuntimeException: A TaskDescription's primary color should be opaque 오류 해결

두콩 2019. 8. 26. 19:38

Unable to start activity ComponentInfo{}:

 java.lang.RuntimeException: A TaskDescription's primary color should be opaque

 

필자가 현재 사용중인 안드로이드9.0 Pie에서는 아무 문제가 없었다. 그래서 아무런 의심없이 바로 출시해버렸다. 그런데 웬걸.. 혹시나하고 녹스 에뮬레이터로 앱을 다운받아보니 실행조차 되지 않았다.. 급하게 안드로이드 스튜디오를 키고 로그캣을 뒤적거린뒤 스택오버플로우에서 어렵지않게 답을 찾을 수 있었다.

 

사실 로그캣에 답이 고스란히 적혀있는데, primary color는 opaque(불투명)해야만 한다. 아마도 얼마전 업데이트했던 최신 안드로이드 스튜디오의 컬러피커 기능이 자동으로 alpha(투명도) 값까지 추가해버려서 이런 불상사가 생긴 것 같다.

 

해결법은 매우 간단하다. 우선 투명도가 꼭 필요하다면 values-v21으로 분기해서 안드로이드 5.0을 위한 color.xml을 따로 정의해주면 된다. 그게 아니라면 그냥 투명도 옵션을 제거해버리자. 색상을 입력할 때 사용한 컬러코드가 #BBAAAAAA패턴이라면 앞에 있는 BB를 빼버리면 그만이다! 6자리 AAAAAA가 실제 색상값이고 2자리 BB가 16진수로 투명도를 나타내는 값이기 때문이다.

 

필자의 경우에는 BB자리에 E2가 붙어있었는데, 찾아보니 88~89% 사이의 투명도에 해당하는 값이다. 0~100으로 나뉘고 0에 가까울수록 더 투명하므로 이는 거의 불투명에 가깝다는 뜻이다. 그렇다보니 투명도가 너무 미비하게 적용되어서 미처 눈치채지도 못했던 것이다...;;

 

이 글을 쓰는 이 시점에서 롤리팝 디바이스의 점유율은 크지 않고, 그마저도 점점 줄어들고 있는 추세이다. 다만 그럼에도 지원을 포기하고 아예 무시하기에는 조금 신경쓰이는 점유율이다. 특히나 최신 디바이스의 보급이 느린 개발도상국까지도 잠재 고객으로 생각하고 있다면 더욱 놓칠 수 없는 부분일 것이다. 이놈의 안드로이드 파편화 현상.. 구글이 추후 새롭게 선보일 안드로이드Q(10)에서는 보다 굳건한 방향으로 수렴하는 행태를 기대해본다.

 

 

한줄 요약: 롤리팝에서 튕기는 이슈가 발생하면 'primary color should be opaque'를 떠올려라!

 

 

Comments