본문 바로가기

그 외

샤오미 미밴드 앱, 미핏 오류로 죽는 현상 수정된 APK (2016/03/03)

대륙의 실수

샤오미 미 밴드. (Mi Band) 이미 유명해서 많은 분들이 이용하고 계시는데요,

언제부터인지는 모르겠지만, 2016년 3월 들어 뜬금없이 죽는 현상이 있어서 분석 후 수정을 해보았습니다.

어떤 버그인지 궁금하네요...!


수정된 APK 다운로드 링크 (공식 앱이 아닙니다. 제가 임의로 만든 버전입니다):

https://drive.google.com/file/d/0B2OD_t15K157U1lKODVhVzBWaUU/view?usp=sharing


이슈: 실행 시 죽음.

FATAL EXCEPTION: main

Process: com.xiaomi.hm.health, PID: 10917

java.lang.IllegalArgumentException: Unknown pattern character 'Y'

at java.text.SimpleDateFormat.validatePatternCharacter(SimpleDateFormat.java:314)

at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:289)

at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:356)

at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:249)

at cn.com.smartdevices.bracelet.Utils.c(Unknown Source)

at cn.com.smartdevices.bracelet.chart.util.r.a(Unknown Source)

at cn.com.smartdevices.bracelet.ui.aA.b(Unknown Source)

at cn.com.smartdevices.bracelet.ui.aA.onResume(Unknown Source)


크래쉬 로그를 보니, 날짜 표시를 위해 SimpleDataFormat을 불러오는 부분에 문제가 있는 것 같습니다.

그래서 앱 내의 리소스를 확인해 보니... 한국어 스트링이 아래와 같이 되어 있더군요.

    <string name="date_year_month">Yyyy mmm</string>

    <string name="date_year_month_day">Yyyy MMM dd</string>


yyyy mmm 으로 들어가야하는 스트링이 Yyyy mmm으로 들어가 있습니다. (이건 정해져 있는 규칙입니다.)

즉, 대소문자가 잘못들어가 있습니다...... 그 말은 영문으로 실행시키면 잘 된다는 뜻?




역시, 폰의 언어를 영어로 변경하니 멀쩡히 동작하는데 한국어로 실행시키니 죽는군요. 이 무슨......

직접 버그를 수정한 앱을 설치한 뒤 실행해 봅니다.



수정 완료! 정상실행 되는군요. 저번에 싱크했던 기록까지는 샤오미 서버에 남아있는 모양입니다. 저는 샤오미 mi fit 앱을 완전히 지우고 제가 고친 앱을 깔았는데, 예전 기록을 확인할 수 있네요.



이 현상의 해결방법 1: 폰의 언어를 영어로 변경한 뒤 이용한다....... -_-


이 현상의 해결방법 2: 제가 한 것처럼, 이 글 윗 부분의 링크에서 APK를 다운로드 받아 이용합니다. 

하지만 이 버전은 단순히 버그를 수정한 뒤, 제가 임의로 만든 버전이고, 샤오미에서 공식 배포하는 버전은 아닙니다. 어떤 보증도 하지 않습니다.


이 현상의 해결방법 3: 샤오미에서 고쳐줄 때까지 기다린다. 앱이 죽으면 구글에서 자동으로 샤오미에게 이슈 리포트를 해줍니다. 그러니 샤오미에서는 이 에러를 보고 있을 것이고, 언젠가는 고쳐줄겁니다.