Android CLI 개요

Android CLI는 원하는 도구를 사용하여 Android를 더 쉽고 효율적으로 빌드할 수 있는 명령줄 인터페이스입니다. 에이전트 우선 워크플로의 핵심 개발 역량을 표준화하여 더 효과적으로 개발하는 데 필요한 공식 도구, 스킬, 지식에 대한 진입점을 제공합니다. 또한 Android 개발의 분산된 특성을 고려하여 CI, 유지보수, 기타 스크립팅된 자동화를 간소화할 수 있습니다.

예를 들어 에이전트 또는 스크립트는 CLI를 사용하여 환경 설정을 자동화하고, 템플릿에서 새 프로젝트를 스캐폴딩하고, 터미널에서 직접 가상 기기를 관리할 수 있습니다. 또한 에이전트가 Android 스킬 과 전문화된 Android 기술 자료에 액세스하여 프로젝트에 Android 권장 패턴과 권장사항을 적용할 수 있도록 지원합니다.

Android CLI 설치

Android CLI를 설치하려면 다음 단계를 따르세요.

  1. Android CLI를 다운로드합니다.

  2. 최신 버전을 사용하고 있는지 확인하려면 Android CLI를 업데이트합니다.

    android update
    

Android CLI가 머신에 이미 설치되어 있는지 확인하려면 which android 또는 command -v android를 실행합니다. 경로가 반환되면 설치된 것입니다.

에이전트 설정

에이전트가 Android CLI를 이해하고 사용할 수 있도록 하려면 init를 실행하여 android-cli 스킬을 설치합니다.

android init

알려진 문제

  • Windows용 android emulator 명령어가 현재 사용 중지되어 있습니다.

문제가 발생하거나 의견을 제공하려면 버그를 신고해 주세요.

전역 옵션

이러한 옵션은 다른 Android CLI 명령어와 함께 사용할 수 있는 선택적 플래그입니다.

-h, --help

사용: android <command> -h

설명: 문제의 도구 또는 특정 명령어의 도움말 매뉴얼을 표시합니다.

예:

  • android -h
  • android create -h

--sdk

사용: android --sdk=<path-to-sdk> <command>

설명: 다음에 나오는 명령어에 사용할 Android SDK의 경로입니다. 전환할 때마다 전역 환경 변수를 변경하는 대신 --sdk 설정을 사용하여 기본 Android SDK를 일시적으로 재정의할 수 있습니다. 기본적으로 사용 중인 Android SDK를 확인하려면 android info를 실행합니다.

예: android --sdk=<path/to/sdk> sdk list

명령어

이 섹션에서는 모든 Android CLI 명령어를 나열하고 그 기능을 설명합니다. 이러한 명령어는 모두 android로 시작해야 합니다(예: android create, android run 등). 선택적 수정자는 대괄호 []로 묶여 있으며 필수 인수는 묶여 있지 않습니다.

create

사용: android create [--dry-run] [--verbose] [--name=<application-name>] [--output=<dest-path>] [<template-name>]

설명: 템플릿에서 새 프로젝트를 초기화합니다. 템플릿 옵션을 보려면 android create -h를 실행합니다.

인수 (필수):

  • -o, --output - 대상 프로젝트 디렉터리 경로입니다.

옵션:

  • --dry-run - 파일을 실제로 저장하지 않고 전체 프로젝트 생성 프로세스를 시뮬레이션합니다. 예를 들어 드라이 런을 실행하여 템플릿을 커밋하기 전에 다양한 템플릿의 기능을 확인할 수 있습니다.
  • --verbose - 템플릿에서 복사되는 파일과 같은 정보를 포함하여 상세 출력을 사용 설정합니다.
  • --name=<application-name> - 프로젝트 디렉터리의 이름입니다. 생략하면 출력 디렉터리가 사용됩니다.
  • <template-name> - 새 프로젝트를 만들 템플릿의 이름입니다. 생략하면 empty-activity-agp-9가 사용됩니다.

예: android create --dry-run --verbose empty-activity-agp-9

create list

사용: android create list

설명: 새 프로젝트를 만들 수 있는 모든 템플릿을 나열합니다.

describe

사용: android describe [--project_dir=<project-directory>]

설명: Android 프로젝트를 분석하여 설명 메타데이터를 생성합니다. 이 명령어는 빌드 타겟과 상응하는 출력 아티팩트 위치 (예: APK 파일)를 비롯하여 프로젝트의 구조를 자세히 설명하는 JSON 파일의 경로를 식별하고 출력합니다. 이 정보를 통해 다른 도구와 명령어가 빌드 아티팩트를 효율적으로 찾을 수 있습니다.

옵션:

  • --project_dir - 설명할 프로젝트 디렉터리입니다. 생략하면 현재 디렉터리가 사용됩니다.

예: android describe --project_dir=/path/to/your/project

docs

사용:

  • android docs search <query>
  • android docs fetch <kb-url>

설명: android docs 명령어는 CLI에서 직접 Android 기술 자료에 액세스하는 2단계 프로세스입니다. 먼저 search 명령어를 사용하여 쿼리와 관련된 문서를 검색합니다. 검색 결과에는 kb://로 시작하는 특수 URL이 포함되며, 이 URL을 fetch 명령어와 함께 사용하여 문서 명령어를 터미널에 출력할 수 있습니다.

예:

  • android docs search 'How do I improve my app performance?'
  • android docs fetch kb://android/topic/performance/overview

emulator create

사용: android emulator create [--list-profiles] [--profile=<profile-name>]

설명: 가상 기기를 만듭니다.

옵션:

  • --list-profiles - 기기를 만드는 데 사용할 수 있는 기기 프로필을 나열합니다.
  • --profile=<profile-name> - 지정된 프로필로 기기를 만듭니다. 생략하면 medium_phone 프로필이 생성됩니다.

emulator list

사용: android emulator list

설명: 사용 가능한 가상 기기를 나열합니다.

emulator start

사용: android emulator start <device-name>

설명: 지정된 가상 기기를 실행합니다.

인수 (필수):

  • <device-name> - 시작할 기기 이름입니다 (예: medium_phone). 사용 가능한 기기를 보려면 android emulator list를 사용하세요.

예: android emulator start medium_phone

emulator stop

사용: android emulator stop <device-serial-number>

설명: 지정된 가상 기기를 중지합니다.

인수 (필수):

  • <device-serial-number> - 중지할 기기 일련번호입니다.

예: android emulator stop emulator-5554

info

사용: android info

설명: 사용된 기본 Android SDK의 경로를 표시합니다. 사용된 Android SDK를 변경하려면 --sdk를 사용하세요.

init

사용: android init

설명: android-cli 스킬을 설치하여 에이전트의 환경을 설정합니다.

layout

사용: android layout [--pretty] [--output] [--diff]

설명: 실제 기기 또는 에뮬레이터를 통해 연결된 활성 Android 앱의 UI 레이아웃을 JSON 형식으로 반환합니다.

옵션:

  • -p, --pretty - 사람이 읽을 수 있도록 들여쓰기와 줄바꿈으로 JSON 출력을 형식화합니다.
  • -o, --output - 레이아웃 트리를 저장할 파일 위치를 지정합니다. 생략하면 JSON이 stdout에 직접 출력됩니다.
  • -d, --diff - 전체 레이아웃 트리 대신 마지막 내부 스냅샷이 생성된 이후 (마지막으로 레이아웃이 실행된 시간) 변경된 레이아웃 요소만 목록으로 반환합니다.

예:: android layout --output=./hierarchy.json

skills add

Android 스킬은 에이전트가 Android 개발에 관한 권장사항과 가이드라인을 따르는 특정 패턴을 더 잘 이해하고 실행할 수 있도록 설계된 특수 안내입니다. 자세한 내용은 Android 기능 소개를 참고하세요.

사용: android skills add [--all] [--agent=<agent-name>] [--skill=<skill-name>]

설명: 감지된 모든 에이전트의 스킬 디렉터리에 Android 스킬을 설치합니다. 기존 에이전트 디렉터리가 없고 특정 에이전트를 지정하지 않으면 스킬이 ~/.gemini/antigravity/skills에 Gemini 및 Antigravity용으로 설치됩니다.

옵션:

  • --all - 모든 Android 스킬을 한 번에 추가합니다. 생략되고 --skill이 지정되지 않으면 android-cli 기능만 설치됩니다.
  • --agent - 스킬을 설치할 에이전트의 쉼표로 구분된 목록입니다. 생략하면 감지된 모든 에이전트에 스킬이 설치됩니다.
  • --skill - 설치할 기능 이름입니다. 생략되고 --all이 지정되지 않으면 android-cli 스킬만 설치됩니다.

예: android skills add --agent='gemini' edge-to-edge

skills find

사용: android skills find <string>

설명: 지정된 문자열과 일치하는 스킬을 찾습니다.

인수 (필수):

  • string - 스킬 설명과 일치하는 문자열입니다.

예: android skills find 'performance'

skills list

사용: android skills list [--long]

설명: 사용 가능한 스킬을 나열합니다.

옵션:

  • --long - 스킬 설명 및 이미 설치된 에이전트를 비롯하여 각 스킬에 관한 추가 정보를 출력합니다.

skills remove

사용: android skills remove [--agent] --skill=<skill-name>

설명: 스킬을 삭제합니다. 특정 에이전트를 지정하지 않으면 모든 에이전트에서 스킬이 삭제됩니다.

인수 (필수):

  • --skill - 삭제할 기능의 이름입니다.

옵션:

  • --agent - 스킬을 삭제할 에이전트의 쉼표로 구분된 목록입니다. 생략하면 모든 에이전트에서 스킬이 삭제됩니다.

예: android skills remove --agent='gemini' --skill=edge-to-edge

screen capture

사용: android screen capture [--output] [--annotate]

설명: 연결된 기기의 스크린샷을 캡처합니다.

옵션:

  • -o, --output - 스크린샷을 저장할 파일 위치를 지정합니다. 생략하면 원시 PNG 데이터가 stdout에 직접 출력됩니다.
  • -a, --annotate - 이미지에서 감지된 모든 UI 요소 주위에 라벨이 지정된 경계 상자를 그려 resolve 명령어와 함께 사용할 수 있습니다.

예: android screen capture --output=ui.png

screen resolve

사용: android screen resolve --screenshot=<path> --string=<string>

설명: screen capture를 사용하여 캡처한 주석이 달린 스크린샷의 시각적 라벨을 실제 화면 좌표 (x, y)로 변환합니다. 위치를 수동으로 계산하지 않고 요소의 클릭을 스크립팅하는 데 유용합니다.

플래그:

  • --screenshot - 주석이 달린 스크린샷의 경로입니다.
  • --string - UI 요소 라벨에 해당하는 자리표시자를 하나 이상 포함하는 문자열입니다.#<number> #<number> 부분은 화면 좌표로 대체됩니다.

예:

라벨 5가 좌표 (500, 1000)에 있는 경우 명령어

android screen resolve --screenshot=ui.png --string="input tap #5"

출력을 반환합니다.

input tap 500 1000

sdk install

사용: android sdk install <package[@version]> [--beta] [--canary] [--force]

설명: 지정된 SDK 패키지를 설치합니다.

인수 (필수):

  • package[@version] - 설치할 패키지의 공백으로 구분된 목록입니다. 버전이 지정되지 않으면 채널(기본적으로 안정화 버전 채널)의 최신 버전 패키지가 설치됩니다.

옵션:

  • --beta - 베타 패키지를 포함합니다.
  • --canary - 카나리아 패키지를 포함합니다.
  • --force - 이전 버전으로 강제 다운그레이드합니다.

예:

  • android sdk install platforms/android-34 build-tools/34.0.0 - 안정화 버전 채널에서 Android SDK 플랫폼 34 및 SDK 빌드 도구 34.0.0 패키지의 최신 버전을 설치합니다.
  • android sdk install platforms/android-34@2 - Android SDK 플랫폼 34 패키지의 버전 2를 설치합니다.
  • android sdk install --canary system-images/android-35/google_apis/x86_6 - 카나리아 채널에서 Android 35 시스템 이미지의 최신 버전을 설치합니다.
  • android sdk install --force platforms/android-33@1 - 안정화 버전 채널에서 Android SDK 플랫폼 33 패키지의 버전 1 로 되돌립니다.

sdk list

사용: android sdk list <package-pattern>

설명: 설치된 SDK 패키지와 사용 가능한 SDK 패키지를 나열합니다.

인수 (필수):

  • <package-pattern> - 패턴별로 패키지를 필터링합니다. 정규 표현식을 지원합니다.

옵션:

  • --all - 설치된 패키지와 사용 가능한 패키지를 모두 표시합니다.
  • --all-versions - 각 패키지의 모든 버전을 표시합니다.
  • --beta - 베타 패키지를 포함합니다.
  • --canary - 카나리아 패키지를 포함합니다.

sdk remove

사용: android sdk remove <package-name>

설명: SDK에서 패키지를 삭제합니다.

인수 (필수):

  • <package-name> - 삭제할 패키지의 이름입니다.

예: android sdk remove build-tools/36.1.0

run

사용: android run [--debug] [--activity=<activity-name>] [--device=<serial-number>] [--type=<param>] --apks=<apk-paths>

설명: 연결된 기기 또는 에뮬레이터에 Android 앱을 배포합니다. 빌드 단계를 실행하지 않습니다. 설치할 APK 파일의 경로를 제공해야 합니다.

인수 (필수):

  • --apks - 설치할 APK 파일의 경로를 쉼표로 구분한 목록입니다. 경로는 현재 파일 시스템의 위치를 기준으로 합니다.

옵션:

예:

  • android run --apks=app/build/outputs/apk/debug/app-debug.apk - 단일 APK를 기본 기기에 배포합니다.
  • android run --apks=base.apk,density-hdpi.apk,lang-en.apk - 여러 APK를 기본 기기에 배포합니다.
  • android run --apks=app-debug.apk --type=SERVICE --activity=.sync.DataSyncService - 활동 없이 서비스를 테스트합니다.
  • android run --apks=app-debug.apk --device=emulator-5554 - 특정 기기에 APK를 배포합니다.

sdk update

사용: android sdk update [--beta] [--canary] [<package-name>]

설명: 하나 또는 모든 패키지를 채널 (기본적으로 안정화 버전 채널)의 최신 버전으로 업데이트합니다. 패키지를 지정하지 않으면 모든 패키지가 업데이트됩니다.

옵션:

  • <package-name> - 업데이트할 패키지의 이름입니다.
  • --beta - 베타 패키지를 포함합니다.
  • --canary - 카나리아 패키지를 포함합니다.
  • --force - 이전 버전으로 강제 다운그레이드합니다.

예:

  • android sdk update - SDK의 모든 항목에 관한 업데이트를 확인하고 설치합니다.
  • android sdk update build-tools/34.0.0 - Android SDK 빌드 도구 34.0.0 패키지를 안정화 버전 채널의 최신 버전으로 업데이트합니다.
  • android sdk update --canary platforms/android-35 - Android SDK 플랫폼 35 패키지를 카나리아 채널의 최신 버전으로 업데이트합니다.

update

사용: android update

설명: Android CLI를 업데이트합니다.

-V, --version

설명: Android CLI의 현재 버전을 표시합니다.