반응형
1차는 별도의 블로그 없이 개발 진행 상태.
개요
Android TXT/EPUB 전자책 리더 앱 KikiLeoBook의 개발을 진행 중입니다. 어제와 오늘 3가지 주요 버그를 수정하고 5가지 새로운 기능을 추가했습니다.
📋 어제 (3월 23일) — 버그 수정
1️⃣ EPUB 파일 실행 시 ERR_CLEARTEXT_NOT_PERMITTED 에러
문제: Android 9+ 이상에서 HTTP 통신 차단. NanoHTTPD 로컬 서버(localhost:8765)에서 EPUB을 렌더링하는데 cleartext(암호화되지 않은) 트래픽 금지로 epub.js 로드 실패.
해결:
- app/src/main/res/xml/network_security_config.xml 생성
- localhost/127.0.0.1에만 cleartext traffic 허용
- AndroidManifest.xml에서 android:networkSecurityConfig 참조
2️⃣ TXT 파일 읽던 위치가 복원되지 않음
문제: 책을 읽다가 나갔다가 다시 열면 처음부터 시작. getCurrentPosition()이 chunk index만 저장하고 chunk 내 정확한 위치를 무시.
해결:
- 픽셀 레벨 offset 저장: "chunkIndex:pixelOffset" 형식 사용
- LinearLayoutManager.findViewByPosition()?.top으로 정확한 스크롤 위치 계산
- scrollToPositionWithOffset() + post {}로 UI 업데이트 동기화
- NonCancellable context로 코루틴 취소 시에도 진도 저장
3️⃣ Google 로그인 실패 (구글 로그인 취소됨)
원인: Firebase Console 내 SHA-1 미등록 및 google-services.json 설정 누락.
해결:
- Android Studio에서 SHA-1 추출 및 Firebase 등록
- Firebase Authentication 내 Google 설정 활성화
- OAuth client ID가 포함된 google-services.json 재적용
- strings.xml에 정확한 web client ID 입력
🚀 오늘 (3월 24일) — 기능 추가 및 개선
✨ 1. 파일 추가 방식 개선 (Intent)
기존: 앱 내 + 버튼을 통한 파일 피커 방식만 지원.
개선:
- 공유 인텐트: 외부 파일 관리자에서 '공유'를 통해 KikiLeoBook 선택 가능
- ACTION_VIEW: .txt, .epub 파일을 탭하면 즉시 KikiLeoBook으로 실행
- AndroidManifest.xml에 관련 intent-filter 구현 완료
✨ 2. 검색 성능 개선 (Debounce)
- ReaderViewModel에 500ms Debounce 적용.
- 사용자가 입력을 멈춘 후 0.5초 뒤에만 검색을 실행하여 리소스 낭비 방지 및 체감 속도 향상.
✨ 3. 독서 진행도 표시
- 화면 하단에 실시간 진행도 바(%) 추가.
- TXT 리더는 RecyclerView 스크롤 기반, EPUB 리더는 epub.js percentage를 수신하여 동기화.
✨ 4. TXT 페이지 넘김 모드 도입
기존: 수직 스크롤 방식만 지원.
개선:
- ViewPager2 기반의 좌우 스와이프 페이지 모드 추가.
- TxtPaginator를 통해 뷰포트 높이에 맞춰 텍스트를 자동으로 분할(Pagination).
- 사용자 설정(AppPreferences)에 모드 저장 및 복원 기능 구현.
✨ 5. 브랜드 리네이밍 (JisunBook → KikiLeoBook)
- strings.xml 및 앱 내부 상수를 KikiLeoBook으로 전면 교체.
📊 구현 현황
✅ 완료
- [x] EPUB cleartext 에러 수정
- [x] TXT 위치 복원 (픽셀 레벨 offset)
- [x] Google 로그인 설정 완료
- [x] 파일 공유/열기 인텐트 연결
- [x] 검색 debounce (500ms)
- [x] 진행도 표시 (%)
- [x] TXT 페이지 모드 (ViewPager2)
- [x] 단위 테스트 통과 (TxtPaginatorTest 등)
- [x] master 브랜치 푸시 완료 (커밋: 969098e)
🔄 진행 중
- [ ] 수동 테스트 (TXT 페이지 넘김, EPUB paginated 등)
🛠️ 기술 스택
- 언어: Kotlin
- UI: Material Design 3, ViewPager2
- DB: Room (SQLite)
- 라이브러리: epub.js, NanoHTTPD, JUnit 4
반응형
'AI > 잡다한개발노트' 카테고리의 다른 글
| KikiLeoBook 개발 진행 상황 4차 (0) | 2026.03.26 |
|---|---|
| KikiLeoBook 개발 진행 상황 3차 (0) | 2026.03.25 |
| 타워디펜스 - 맵 에디터 × Battle Simulator 통합 강화 플랜 (1) | 2026.03.02 |
| 타워디펜스 개발일지 2026_03_01 (0) | 2026.03.01 |
| 전투방식 단순화 개발기록 정리본 (2026-02-28) (0) | 2026.02.28 |