pile·
모바일·LY CorporationLY Corporation·

AI 에이전트를 위한 Android CLI: 대규모 모바일 개발 환경에 적용하기

LINE Android 팀이 수백 개 Gradle 모듈 규모의 대형 저장소에서 Google의 Android CLI를 AI 에이전트(Claude Code, Codex, Gemini 등)와 함께 운용하며 겪은 토큰 낭비·오작동 문제를 해결한 과정을 다룬다. 얇은 래퍼와 스킬 레이어를 추가해 CLI 출력을 에이전트 친화적으로 정규화하고, Android Studio 연동 기능을 텍스트 검색보다 정확한 시맨틱 심볼 탐색에 활용하는 방법을 소개한다.

핵심 포인트
  • Android CLI 문서 검색으로 MCP Knowledge 서버를 교체 → 개발자별 인증·프락시·할당량 대응 로직 제거
  • CLI 바이너리를 Git 저장소에 포함(git-lfs) → 환경 파편화 방지, 보안 정책 래퍼(--no-metrics) 강제
  • --no-metrics 버그(515098197): 플래그 전 초기화 탓에 스택 트레이스 출력 → 쓰기 probe 래퍼로 한 줄 오류로 변환
  • find-declaration/find-usages가 텍스트 검색보다 시맨틱 정확도 높아 대규모 모듈 환경에서 더 유효
  • 래퍼가 출력을 경로:줄번호 요약 + 상세 파일 별도 저장으로 압축 → 에이전트 토큰 절약
  • find-usages는 현재 신뢰성 문제로 비활성화(528094657), grep으로 대체 중
상세 정리
  • 배경: 수백 개 Gradle 모듈 대형 저장소에서 grep/glob 검색이 수천 건 반환 → 에이전트 컨텍스트 폭발, 토큰 비용 급증
  • 문서 검색 교체: Knowledge MCP 서버(개발자별 GCP 인증 + 프락시 + 할당량 대응) → Android CLI docs 서브커맨드 2단계(search → fetch)로 단순화
  • 바이너리 저장소 포함 이유: 환경 파편화 방지, --no-metrics 강제 래퍼, 기존 git-lfs 활용으로 비용 미미
  • --no-metrics 버그: CLI 시작 시 메트릭 초기화가 플래그 파싱 전에 실행 → 샌드박스 환경에서 수십 줄 Java 스택 트레이스 출력 → 래퍼가 쓰기 probe로 사전 감지 후 한 줄 오류로 변환
  • Android Studio 연동 기능: check(인덱싱 상태 확인), analyze-file(빌드 없이 인스펙션), find-declaration(선언 위치), find-usages(사용처), render-compose-preview(PNG 렌더링)
  • studio-check 래퍼: 여러 Studio 인스턴스 중 현재 프로젝트 매칭, 인덱싱 대기 폴링을 래퍼 내부로 캡슐화
  • 스킬 구조: .agents/skills/ 에 SKILL.md, .agents/tools/ 에 래퍼 스크립트 → Claude Code/Codex는 스킬→래퍼→CLI, Gemini in Studio는 빌트인 툴 직접 사용
  • 출력 최적화: 원본 수천 줄 → 래퍼가 경로:줄번호 한 줄씩 요약, 상세는 build/studio-find/ 파일로 저장 후 경로만 전달
  • render-compose-preview 성공 판정: exit code 0이어도 실패 가능 → Wrote rendering to 줄 유무로 판정, 실패 시 studio-check → @Preview 확인 → analyze-file → Gradle Sync 순 진단
  • Gradle Sync 미해결: CLI에 sync 서브커맨드 없음(525093271 P1), find-usages도 동명 지역 함수 시 사용처 누락 버그(528094657)로 현재 비활성화
  • 향후 계획: studio-analyze-file로 unused 심볼 식별 + find-usages로 테스트 전용 사용처 확인 → 미사용 코드 자동 정리 자동화 검토
왜 읽나Android CLI와 AI 에이전트를 대규모 모노레포에 적용하려는 Android 플랫폼 엔지니어에게 래퍼·스킬 설계와 버그 회피 패턴의 실전 레퍼런스.
LY Corporation
LY Corporation 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 모바일·토스 SLASH토스 SLASH·

    토스의 디바이스 팜 만들기

    토스가 각 팀이 각자 운영하던 작은 디바이스 팜을 하나의 중앙 플랫폼 '네뷸라(Nebula)'로 통합한 과정을 다룬다. Appium 대신 자체 드라이버를 개발해 클릭 13.5배, 텍스트 입력 10배의 성능을 달성했고, Android와 iOS 미러링도 직접 내재화해 실기기 원격 조작과 화면 실시간 공유를 동시에 가능하게 만들었다. 현재 100대를 넘어 수백 대를 향해 24시간 가동 중이다.

    #android#ios#appium+2
  2. 모바일·토스 SLASH토스 SLASH·

    디자이너가 시안 대신 앱을 만든 이유

    토스 UX 디자이너가 AI를 협력자로 삼아 피그마 시안 대신 실제 SwiftUI 코드로 iOS 앱을 직접 구현한 경험을 다룬다. "데드엔드" 화면(송금·결제 완료 등)을 다음 경험의 시작점으로 전환하는 underlay 컴포넌트를 설계하면서 Metal 셰이더 구현까지 디자이너가 주도했고, 완성된 코드를 개발팀에 전달해 협업 방식 자체를 바꿨다.

    #design-system#ai-coding#ios+2