안드로이드 Sol Prime 단말 fontFamily 설정 오류
Sol prime 단말에서 텍스트 뷰 인플레이트 시 앱 종료 현상을 확인했다.
오류 내용은,
Caused by java.lang.IndexOutOfBoundsException
android.content.res.StringBlock.nativeGetString (StringBlock.java)
android.content.res.StringBlock.get (StringBlock.java:82)
android.content.res.AssetManager.getPooledStringForCookie (AssetManager.java:272)
android.content.res.TypedArray.loadStringValueAt (TypedArray.java:1168)
android.content.res.TypedArray.getString (TypedArray.java:207)
android.widget.TextView. (TextView.java:1208)
android.widget.TextView. (TextView.java:799)
android.widget.TextView. (TextView.java:795)
뭐 대략 이런 내용으로 오류 로그가 발생했다.
v23 테마 부분에 fontFamily 가 설정 되어 있어 발생 하는 것 까진 알았는데,
당최 이유를 알 수 없었다.
fontsFamily 설정은 OS 5.0 에서 OS 6.0으로 업데이트 된 LG 단말에서 사용자 지정 폰트로 앱 폰트가 변경 되지 않아,
추가 해준 상태였다.
결국은 fontsFamily item을 테마에 직업 적용하지 않고,
<style name="DefaultFont" parent="TextAppearance.AppCompat">
<item name="android:typeface">@null</item>
<item name="android:textStyle">normal</item>
<item name="android:fontFamily">*****</item>
</style>
해당 스타일을 테마에 textViewStyle 로 설정하여 해결하였다.(텍스트뷰에만 적용 됨..ㅜ_ㅜ 라디오 버튼등 다른 위젯들은 또 해당 스타일을 적용해줘야한다.)
신기한 점은, 위 커스텀 폰트 스타일에 fontFamily 옵션에 @null 넣을 경우 사용자 설정 폰트가 적용되지 않았으나,
**** 가 아닌 임의의 아무 문자열 을 넣었을 경우 적용이 되었다.
원인도 이해하지 못하고,
해결해 찝찝한 점이 있으나, 위 방식으로 해도 IM-100등 일부 OS 6.0 단말을 또 적용이 되지 않았다...
이래저래 예전 폰 대응은 어렵다 ㅜㅜ
안드로이드 파편화는 너무 심각하다는 생각을 다시 한번 생각하게 되는 하루다 ㅜㅜ