← Docs hub

A1 System APK Release Recovery 2026-08-01

이 문서는 A1 실기기에서 MaumAi와 MR6 DeviceAgent를 교체한 뒤 발생한 부팅 불안정 원인을 분리하고, release APK로 복구·재배포한 증거를 기록한다.

결론

장애 배포의 직접적인 릴리스 프로세스 결함은 platform 서명 실패가 아니라 debug build variant 오선택이었다.

항목 장애 배포본 복구 배포본
MaumAi variant debug, application-debuggable release, non-debuggable
MaumAi version 1.19.28 1.19.36
MaumAi APK 크기 994,537,474 bytes 839,847,786 bytes
MaumAi bundled native libs 16개, 130,930,224 bytes 0개
DeviceAgent variant debug, application-debuggable MR6 release, non-debuggable
DeviceAgent APK 크기 13,240,940 bytes 3,649,326 bytes
DeviceAgent version 0.257 0.257
인증서 SHA-256 platform cert 동일 platform cert

MaumAi는 android.uid.system을 사용하는 persistent system app이다. debug variant는 release에서 제외되는 QNN, Genie, ONNX, Sherpa 계열 native library를 APK 안에 함께 넣고 있었다. 따라서 장애 배포는 production system app과 다른 로딩 표면을 만들었고, persistent app 시작 실패가 반복될 위험이 있었다. DeviceAgent도 minify되지 않은 debug variant가 함께 배포됐다.

이전 부팅의 fatal stack은 DropBox, watchdog, pstore에 남아 있지 않았다. 따라서 정확히 어느 native load 또는 persistent restart가 최종 reboot를 발생시켰는지는 직접 증명하지 않는다. 다만 서명, DB, 저장공간은 배제됐다.

안전 배포 절차

  1. 기기 설치 APK를 로컬로 pull하고 SHA-256을 기록한다.
  2. MaumAi는 testDebugUnitTestassembleRelease를 실행한다.
  3. DeviceAgent는 a1-packages-mr6/apps/DeviceAgent에서 testDebugUnitTestassembleRelease를 실행한다.
  4. 두 APK를 zipalign한 뒤 지정된 platform.jks로 다시 서명한다.
  5. apksigner verify --print-certs로 기기 platform 인증서와 비교한다.
  6. 대상 디렉터리에 .new 이름으로 push하고 기기 측 SHA-256을 검증한다.
  7. 검증된 .new만 원본 이름으로 rename하고 0644, root:root, system_file context를 적용한다.
  8. sync 후 한 번 재부팅하고 부팅, PID, fatal, DB, TaskManager를 확인한다.

debug APK는 platform 인증서로 다시 서명해도 release APK가 되지 않는다. application-debuggable, release minify/resource shrink, native library 포함 여부를 별도로 검증해야 한다.

2026-08-01 실기기 증거

대상 기기: 192.168.123.118:5555

검증 결과
MaumAi unit test BUILD SUCCESSFUL
MaumAi release build BUILD SUCCESSFUL
DeviceAgent unit test BUILD SUCCESSFUL
DeviceAgent release build BUILD SUCCESSFUL
platform cert c8a2e9bc...51192ab8
재부팅 완료 sys.boot_completed=1, boot animation stopped
5분 PID 유지 MaumAi 2698, DeviceAgent 2868
package fatal 0
DB downgrade / SQLite fatal 0
DeviceAgent schedule Schedule initialization done
TaskManager enabled, executor 56개, queue 11개

배포 artifact:

배포 전 기기 백업:

분리된 후속 이슈

부팅 후 DeviceAgent semantic observation은 MaumAi outbox에 정상 enqueue 됐지만 Cloud endpoint가 HTTP 500을 반환했다. outbox가 이벤트를 보존하고 프로세스는 유지됐다. 이는 APK 서명·부팅·TaskManager 초기화와 분리된 Cloud endpoint 과제다.

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date