새벽 1시 20분인데
별것도 아닌 얘 때문에 잠을 못자고 있었는데 드디어 잘 수 있게 되었으나 같은 검색, 같은 삽질을 또 하지 않기위해 기록 후 잠들고자 글을 쓴다
1. 로그캣에 아래와 같은 에러가 나타나면서 앱이 비정상 종료 되었다
- Caused by: android.database.sqlite.SQLiteException: no such table: XXX (code 1 SQLITE_ERROR): , while compiling: SELECT XXX FROM XXX;
- Assets 폴더에 미리 만들어놓은 SQLite 파일을 넣어두고 /data/data/[Package Name]/databases/.. 경로로 복사해서 읽으려하는데 발생한 오류다
- Android Studio의 View -> Tool Windows -> Device File Explorer를 통해 복사된 SQLite를 확인해보면 정상적으로 테이블이 존재한다
2. 언제나 해결하고나면 너무 간단해서 불편하다
- 얼마나 많은 구글링을 했는데 답을 발견하지 못하다가 기나긴 삽질 끝에 찾아냈다
- Android P 부터는 WAL을 사용하도록 설정되는것이 기본이다 (Write Ahead Logging)
- https://www.sqlite.org/wal.html
- WAL을 해제하자 : SQLiteOpenHelper를 상속받는 클래스로가서 아래와 작성한다
@Override public void onConfigure(SQLiteDatabase db) { super.onConfigure(db); db.disableWriteAheadLogging(); }
- Android Studio의 View -> Tool Windows -> Device File Explorer에서 /data/data/[Package Name]/databases/ 아래 wal로 끝나는 파일을 삭제한다
- 정상적으로 작동한다
'개발 > Android' 카테고리의 다른 글
[Android] 푸시메시지(FCM) 클릭시 파라미터 받기 (0) | 2021.10.21 |
---|---|
구글 플레이스토어 앱 검색 안됨 - 현재 앱을 검토하는 중입니다 (5) | 2020.02.04 |
구글 플레이 기기 및 네트워크 악용 정책 위반 - 유튜브 백그라운드 (2) | 2019.11.20 |
Android 루팅 여부, 루트 권한 체크하기 (0) | 2019.11.08 |
html 난독화는 가능한가 (Android Assets APK 압축해제) (0) | 2019.11.05 |