이번 업데이트에서 TextView에 fontFamily 속성 부여후 앱 배포를 했는데,
android:fontFamily="sans-serif-light"
상기와 같이 xml에 직접적으로 폰트속성을 설정해준 곳에서는 발생하지 않고
android:theme="@style/textTheme"
<style name="textTheme">
<item name="android:textSize">28dp</item>
<item name="android:fontFamily">sans_serif_light</item>
</style>
와 같이 테마로 설정해준 곳에서만 발생하는데,
일부 기기에서 InflateException이 계속 발생하여 원인을 계속 찾았습니다.
그런데 이것이 해당되는 모든 레이아웃에서 발생하는것이 아니고,
일부 특정 레이아웃에서만 계속 발생하였기 때문에 원인이 무엇인지 알 수 가 없었습니다.
찾아보니, 해당이슈는 api 버전 26 이하의 기기에서 간헐적으로 발생하는 OS 자체의 버그이며,
안드로이드 O 버전 에서는 픽스되었다고 합니다.
즉, O 이하의 기기에서는 발생할 수도, 하지 않을수도 있다는 소리가 되기 때문에... 이를 픽스해주어야 합니다.
테스트시에도 제가 가진 실제기기에서는 그 어떤기기에서도 발생하지 않았고 AVD에서도 발생하지 않았으나
Crash report에는 꾸준히 보고되고 있었습니다.
(실제 리포트에 보고되는 기기의 버전 모두 O 이하의 버전이었으며
실제 테스트용 기기는 최저버전이 O, AVD도 O 이하의 버전은 만들어 놓지 않았습니다.)
해결방법은 아래와 같습니다.
보통 xml 속성을 설정할때 아래와 같이 설정할때는 문제가 발생하지 않지만
android:fontFamily="sans-serif-light"
아래와 같이 속성을 묶어서 테마로 적용할때는
android:theme="@style/textTheme"
<style name="textTheme">
<item name="android:textSize">28dp</item>
<item name="android:fontFamily">sans_serif_light</item>
</style>
이렇게 적용하게 되는데, 이때 InflateException이 발생하게 됩니다.
이 다음과 같이 한단계 더 거쳐서 부여해야, inflateExeption을 피할수 있습니다.
android:theme="@style/textTheme"
<style name="textTheme">
<item name="android:textSize">28dp</item>
<item name="android:fontFamily">@string/sans_serif_light</item>
</style>
<string name="sans_serif_light" untranslateable="true">sans-serif-light</string>
저는 그냥.. xml 속성을 하나하나 설정하는것으로 해결 해 주었습니다.
'Android > Exceptions' 카테고리의 다른 글
invalid drawable tag vector (0) | 2020.03.20 |
---|---|
android.os.NetworkOnMainThreadException (0) | 2020.03.13 |
Manifest merger failed : Attribute application@appComponentFactory (2) | 2019.06.28 |
APK 빌드시 Lint found fatal errors while assembling - (1) | 2019.06.19 |
ad.loadClass에서 발생하는 ClassNotFoundException (0) | 2019.04.03 |
댓글