일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- film
- 미놀타
- Git
- COLORPLUS
- himatic
- Sony
- Exception
- Kodak
- Realm
- 풀프레임
- himatic7s2
- e마운트
- portra400
- himatic7sii
- Android
- 하이매틱
- fullframe
- Minolta
- rx
- 니콘
- 필름카메라
- 35mmf2.8
- SSL
- emount
- variants
- fm2
- gradle
- Flavor
- It
- Nikon
- Today
- Total
BloByJames
날 미치게 하는 Exception: Invalid format of Realm file. 본문
Android에서 SQLite를 대신하여,
간편하고 사용하기 쉬운 Mobile Database.
많이들 사용하고 계신가요?
이 포스팅은 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하고 실행해봅니다.
앱이 죽지 않았으면 좋겠습니다.
감사합니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
날 미치게 하는 Exception: io.realm.exceptions.RealmError: Unrecoverable error. (0) | 2016.11.08 |
---|---|
Gradle Flavor 그리고 google-services.json (0) | 2016.10.21 |
Gradle Flavor 그리고 apk build (0) | 2016.10.08 |
ViewPager와 Fragment 사용하기 (Fragment 함수 호출) (0) | 2016.09.28 |
RxJava로 EventBus, Otto를 대체해보자 (0) | 2016.09.24 |