BloByJames

날 미치게 하는 Exception: Invalid format of Realm file. 본문

IT/Android

날 미치게 하는 Exception: Invalid format of Realm file.

blobyjames 2016. 9. 21. 02:10


Android에서 SQLite 대신하여,

간편하고 사용하기 쉬운 Mobile Database.

Realm.

많이들 사용하고 계신가요?


이 포스팅은 Realm을 소개하기 위한 목적이 아니고,

장점은 익히 파악하여 사용중인걸로 알고 Realm에 대한 긴 설명은 하지 않겠습니다.


하지만 사용하기 쉬운 만큼이나 까다로운 error가 있습니다.


java.lang.IllegalArgumentException: Illegal Argument: Invalid format of Realm file.


아래는 제가 참여하여 개발 서비스 운영 중인 그랩(Grap) 해당 issue 관련 report입니다.



마지막 배포 후 8일 동안 수집된 자료인데, 35명의 사용자에게 216번의 crash가 발생했습니다.


Realm GitHub​​​에서 해당 issue 검색을 해보았습니다.

(검색해보실 분들을 위하여 링크​)


혹여나 해결 방안이 등장할까 realm-java​ notification 받아보고 있지만,

수개월이 흘러도 원하는 답변을 찾을 없었습니다.


이렇게 미치게 하는 때문에, '불편하지만 SQLite 돌아가야 하나...' 라는 생각을 수십번.

하지만 New Project 마다, 항상 dependency에 Realm부터 추가하고 작업하기에,

더욱 issue 방관할 만은 없었습니다.


감격스럽게도 issue close 방안을 찾게 되는데, 해답은 Stack Overflow​.

해결 방안을 알고난 엄청난 허망함과 함께 수개월 동고동락했던 issue, 안녕.



필자를 벼랑 끝에서 구원해 줄 짧은 속성 한 줄.

하지만 줄로 쉽게 끝나진 않았습니다.


위와 같은 error를 만나 또 다시 난관에 봉착한 듯 보이지만,  문제는 쉽게 찾을 있었습니다.


위처럼 tools namespace 추가해 주시고,


android:allowBackup="false"

속성과 함께 함께

tools:replace="android:allowBackup"

추가해줍니다.

(TIP, namespace 추가 없이 tools에 빨간 줄이 그어질 때, 자동 완성으로 쉽게 namespace를 추가할 수 있음.)


Android Studio의 Build Variants에서 release를 선택, build하고 실행해봅니다.


앱이 죽지 않았으면 좋겠습니다.

감사합니다.

Comments