Android Memo

안드로이드 Sol Prime 단말 fontFamily 설정 오류

DevSSAM 2018. 11. 6. 16:32

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 단말을 또 적용이 되지 않았다...


이래저래 예전 폰 대응은 어렵다 ㅜㅜ

안드로이드 파편화는 너무 심각하다는 생각을 다시 한번 생각하게 되는 하루다 ㅜㅜ