Android CLI의 android install은 단순한 adb install의 래퍼(Wrapper)가 아닙니다. 소스 빌드 연동 기능과 함께, 변경된 바이트만 전송하는 증분 설치(Delta Install)를 기본값으로 사용합니다.
두 도구의 내부 동작 차이를 분석하고, 로컬 에뮬레이터와 네트워크 대역폭 제한 환경에서 설치 속도를 비교했습니다.
본 글은 Gemini를 사용하여 초안을 작성한 후 검수하였습니다.
본 글에서 사용된 도구 버전 및 환경(2026년 10월 31일 기준)은 다음과 같습니다.
| 비교 항목 | adb install | android install |
|---|---|---|
| 도구 성격 | Low-level 범용 기기 통신 도구 (platform-tools) |
High-level Android 개발자/에이전트 워크플로 CLI |
| 입력 형태 | 로컬 APK 파일 경로만 지원 | 로컬 APK 경로뿐만 아니라 빌드 참조 ([system://][path]?[target]) 지원 |
| 빌드 연동 | 불가 (사전에 빌드 완료된 APK 필요) | 소스 빌드와 배포를 한 번에 연동 가능 (– |
| 증분 설치 (Delta) | --fastdeploy 옵션 필요 (별도 agent) |
--use-delta-install 기본 활성화 (default: true) |
| 전송 최적화 | Streaming Install 지원 (--streaming) |
변경된 delta 패치 파일만 기기로 전송 (Zero-copy 활용) |
| 다중 APK 지원 | install-multiple, install-multi-package 분리 | –apks=a.apk,b.apk 로 단순화 |
| 실행 연계 | 설치만 수행 | 설치만 수행 (android run 시 설치 후 launch까지 연동) |
adb install은 오직 디스크에 존재하는 .apk 파일만을 대상으로 동작합니다.
반면 android install은 Android CLI 1.1부터 빌드 참조 문법을 직접 인식합니다.
# 로컬 APK 파일 설치
android install --apks=app/build/outputs/apk/debug/app-debug.apk
# Gradle 프로젝트 빌드 후 설치까지 한 번에 수행
android install :app
android install ~/MyProject?:app@debug -- --offline
빌드 타깃을 지정하면 CLI가 프로젝트 구조를 분석해 빌드를 실행하고, 생성된 APK를 찾아 기기에 바로 설치합니다.
android install은 증분 설치 옵션(--use-delta-install)을 기본값(true)으로 사용합니다.
기기에 이전 버전의 앱이 이미 설치되어 있다면, APK 전체를 보내지 않고 로컬 APK와 기기 설치본의 차이(Delta)만 계산해 패치 파일(.seq)을 전송합니다.
기기의 임시 디렉터리(/data/local/tmp)에 배포 에이전트(installer.jar)를 올려 커널의 Zero-copy 시스템 콜로 패치를 적용한 뒤 Package Manager에 반영합니다.
두 도구의 설치 소요 시간과 Delta Install의 데이터 전송 절감량을 확인하기 위해 아래 시나리오별로 테스트를 진행했습니다.
APK 내 특정 영역만 변경되는 상황을 시뮬레이션하기 위해 4종류의 APK 변형(Variant)을 생성했습니다.
uninstall)한 상태에서 최초 설치classes*.dex만 변경)resources.arsc만 변경)assets/marker.txt만 변경)또한 APK 크기에 따른 전송 대역폭 영향을 보기 위해 두 가지 크기로 측정했습니다.
로컬 에뮬레이터는 호스트 메모리 버퍼를 통해 데이터를 전달하므로 네트워크 전송 병목이 없습니다. 5회 반복 측정 후 중앙값 기준입니다.
| 시나리오 | adb install -r | android install (기본 delta) | android install (delta OFF) |
|---|---|---|---|
| fresh | 0.26s | 1.17s | 1.13s |
| same | 0.32s | 1.01s | 1.03s |
| code | 0.32s | 1.01s | 1.07s |
| res | 0.36s | 1.04s | 1.05s |
| asset | 0.33s | 1.06s | 1.03s |
| 시나리오 | adb install -r | android install (기본 delta) | android install (delta OFF) |
|---|---|---|---|
| fresh | 0.46s | 1.50s | 1.22s |
| same | 0.57s | 1.54s | 1.30s |
| code | 0.52s | 1.47s | 1.24s |
| res | 0.48s | 1.42s | 1.28s |
| asset | 0.52s | 1.38s | 1.28s |
로컬 에뮬레이터에서는 adb install -r이 더 빠릅니다.
실제 개발 환경에서는 Wi-Fi 페어링 무선 디버깅이나 USB 2.0 케이블 연결처럼 전송 대역폭이 제한되는 환경이 많습니다. 이를 재현하기 위해 에뮬레이터 포트 앞에 5 MB/s 전송 속도 제한 프록시를 두고 재측정했습니다.
※ 배수 비교는
adb install -r대비android install의 소요 시간 기준이며, 절감율은 전체 APK 크기 대비 실제 전송된 패치 크기 기준입니다.
| 시나리오 | adb install -r | android install (Delta ON) | 절감율 / 전송량 |
|---|---|---|---|
| fresh | 10.41s | 11.63s | 전체 전송 (51.80 MB) |
| same | 10.44s | 1.52s (adb 대비 약 6.8배 빠름) | 554 KB 전송 (98.9% 절감) |
| code | 10.44s | 1.45s (adb 대비 약 7.2배 빠름) | 584 KB 전송 (98.9% 절감) |
| res | 10.53s | 1.68s (adb 대비 약 6.3배 빠름) | 1.46 MB 전송 (97.2% 절감) |
| asset | 10.52s | 1.63s (adb 대비 약 6.4배 빠름) | 1.46 MB 전송 (97.2% 절감) |
| 시나리오 | adb install -r | android install (Delta ON) | 절감율 / 전송량 |
|---|---|---|---|
| fresh | 2.30s | 3.48s | 전체 전송 (11.33 MB) |
| same | 2.31s | 1.28s (adb 대비 약 1.8배 빠름) | 89 KB 전송 (99.2% 절감) |
| code | 2.32s | 1.29s (adb 대비 약 1.8배 빠름) | 140 KB 전송 (98.8% 절감) |
| res | 2.40s | 1.54s (adb 대비 약 1.6배 빠름) | 1.02 MB 전송 (91.4% 절감) |
| asset | 2.40s | 1.49s (adb 대비 약 1.6배 빠름) | 1.02 MB 전송 (91.4% 절감) |
전송 속도가 제한되는 네트워크나 USB 환경에서는 android install이 훨씬 빠릅니다.
adb install -r은 변경된 내용이 적더라도 52MB 전체를 스트리밍 전송하므로 매번 10초 이상(10.44s~10.53s) 걸립니다.android install은 584KB 패치 파일만 전송(전송량 98.9% 절감)하므로 전송 시간을 0.1초대로 줄여 전체 설치를 1.45초(약 7.2배 빠름)에 마칩니다.adb install에도 --fastdeploy 옵션이 있지만, 아래 경고를 출력하며 일반 전체 설치로 전환될 수도 있습니다.
Fast Deploy is only compatible with devices of API version 24 or higher, ignoring.
반면 android install의 Delta Install은 Android Studio 배포 시스템(Deployer)의 기술을 CLI에 적용해 최신 OS에서도 정상적으로 패치 설치를 수행합니다.
android install을 써야 하는 경우
:app 같은 타깃 참조를 넘겨 빌드와 설치를 명령어 하나로 실행할 때 적합합니다.adb install을 써야 하는 경우
adb가 0.2초대로 가장 빠릅니다.platform-tools만 설치된 환경에서 배포할 때 유리합니다.--instant, --abi, 다중 패키지 원자적 설치 등 저수준 Package Manager 옵션이 필요할 때 사용합니다.
Subscribe to this blog via RSS.
[요약] The latest in Android dev tools (Android Dev Summit '26)
Posted on 31 Oct 2026