Skip to content

v1.3.1: 네임스페이스 마이그레이션, LiteRT 실측 벤치마크 연동 및 Keystore 보안 결함 해소

Choose a tag to compare

@zmxnpquryet-gif zmxnpquryet-gif released this 10 Sep 15:19
· 63 commits to main since this release

Local LLM Android v1.3.1 Release Notes

v1.3.0 머지 이후 발견된 잔여 기술 부채 및 불일치(네임스페이스 미반영, 토큰 속도 추정치 잔존, UI 라우팅 원시 문자열 호출, Keystore 조용한 폴백 취약점)를 전면 해소한 완성형 릴리즈입니다.

🏛️ P0 & P3 — 완전한 네임스페이스 및 패키지 마이그레이션

  • com.localllm.android 전면 적용:
    • applicationId뿐만 아니라 빌드 namespace 및 소스/테스트 코드 디렉토리 전체를 com.localllm.android로 이전 완료
    • ProGuard/R8 keep 규칙 동기화 및 com.example 잔여 레거시 레퍼런스 100% 제거

🎯 P1 & P2 — LiteRT-LM C++ 런타임 실측 지표 연동

  • length/3 추정치 완전 제거:
    • LiteRT C++ 코어의 conv.getBenchmarkInfo() 네이티브 지표 연동
    • lastPrefillTokensPerSecond(프롬프트 처리 속도), lastDecodeTokensPerSecond(생성 TPS), lastPrefillTokenCount, lastDecodeTokenCount를 실측치로 정확하게 산출 및 표기

🔒 P0 — Android Keystore 보안 결함(Silent Downgrade) 원천 차단

  • 실기기 런타임 하드코딩 키 폴백 차단:
    • 실기기 환경에서 Keystore 예외 발생 시 하드코딩 키로 조용히 폴백(Silent Fallback)하던 취약점 제거 -> SecurityException 명시적 발생
    • JVM/Robolectric 유닛 테스트 환경에서만 안전하게 테스트 키가 동작하도록 런타임 환경 분리

🛡️ P1 — 사전 OOM 진단 및 실질적 크래시 방지 가드

  • checkMemoryDiagnostics 구현:
    • 단순 Logcat Warning 출력을 넘어, 기기 가용 RAM이 심각하게 고갈된 상황(availMemMb < 150MB 및 모델 크기 초과)에서 네이티브 프로세스 강제 종료(SIGSEGV)를 예방하기 위한 조기 로드 차단 및 사용자 안내 메시지 반환
    • 모델 로딩 중 실시간 메모리 상태 인디케이터 반영

🧭 P2 & P3 — 전 UI 컴포넌트 타입 안전한 네비게이션 (AppScreen)

  • UI 화면 호출부 11곳 전면 전환:
    • ChatScreen, ModelManagerScreen, SettingsScreen, VoiceModeScreen, ApiServerScreen 내 모든 화면 이동 호출부를 AppScreen enum으로 완전 교체
    • MainViewModel.navigateTo(String) 오버로드에 @Deprecated 부여

  • APK 패키징: Localllmandroid-v1.3.1-release.apk (R8 / Minify 최적화 적용, 99.9MB)
  • 테스트: 로컬 유닛 테스트 100% 통과 (Robolectric / JUnit)