SW 개발

WSL 2, 안드로이드 개발 환경 구성하기

지단로보트 2024. 3. 26. 14:50

개요

  • Windows 11을 호스트 머신으로 하는 WSL 2 환경에서 안드로이드 앱 개발 환경을 구성하고, 안드로이드 기기를 연결하는 방법을 정리했다.

WSL 2 안드로이드 개발 필수 준비물

  • WSL 2에서 안드로이드 앱 개발을 하려면 호스트가 되는 Windows 11에는 USBIPD, WSL 2에는 adb, Android Studio를 설치해야 한다.아래와 같이 차례대로 실행한다.
# Android Studio 설치
$ sudo snap install android-studio --classic

# Android Studio 바로가기 생성
$ nano ~/.bash_alises
alias studio="/snap/bin/android-studio > /dev/null 2>&1 &"
alias studio.="/snap/bin/android-studio . > /dev/null 2>&1 &"

# Android Studio 첫 실행 후 안내에 따라 Andorid SDK Command-line Tools 설치
Settings > Languange & Frameworks > Android SDK > SDK Tools > Andorid SDK Command-line Tools

# Windows 11에서 Android ADB Interface 드라이버 설치
https://developer.android.com/studio/run/win-usb
https://developer.samsung.com/android-usb-driver

# Windows 11에서 USBIPD 설치
$ winget install usbipd

# WSL 2에서 adb 설치
$ sudo apt-get install adb -y
$ adb kill-server
$ adb start-server

# adb 실행 확인
$ adb devices
List of devices attached

WSL 2에서 유선 연결된 안드로이드 기기 인식

  • WSL 2는 호스트 PC에 연결된 안드로이드 기기를 인식하지 못한다. USBIPD를 이용하면 USB 트래픽을 WSL 2로 포워딩하여 기기를 인식할 수 있다. 아래와 같이 차례대로 실행한다.
# 안드로이드 기기에서 개발자 모드 활성화 후 케이블로 PC와 연결
설정 > 휴대전화 정보 > 소프트웨어 정보 > [빌드번호] 7번 연속 탭
설정 > 휴대전화 정보 > 개발자 옵션 > [USB 디버깅] 켜기 > [USB 디버깅 권한 승인 취소]

# Windows 11에서 연결된 안드로이드 기기 확인
$ usbipd list
Connected:
BUSID  VID:PID    DEVICE                                               STATE
1-1    1111:1111  S24, SAMSUNG Mobile USB Modem, SAMSUNG Mobile US...  Not shared

# Windows 11에서 연결된 안드로이드 기기를 WSL 2에 포워딩
# 포워딩 시점에 안드로이드 기기에 권한 승인 창에 뜨면 확인
$ usbipd bind -b 1-1
$ usbipd attach --wsl=Ubuntu --busid=1-1

# WSL 2에서 연결된 안드로이드 기기 확인
$ adb devices
List of devices attached
R3CX308V3AJ     device
  • WSL 2에서 adb devices 명령으로 연결된 안드로이드 기기가 조회되면 인식 성공이다.

WSL 2에 Flutter 설치

  • Flutter 개발 환경은 아래와 같이 설치할 수 있다. 앞서 adb devices 명령어로 확인된 연결 기기를 flutter devices 명령에서도 확인할 수 있다.
# Flutter 설치
$ sudo snap install flutter --classic
$ flutter sdk-path
$ flutter doctor --android-licenses

# 정상 설치 여부 확인
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.19.4, on Ubuntu 22.04.4 LTS 5.15.146.1-microsoft-standard-WSL2, locale C.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2023.2)
[✓] Connected device (3 available)
[✓] Network resources

• No issues found!

# Flutter 연결 기기 확인
$ flutter devices
Found 3 connected devices:
  SM S921N (mobile) • 172.10.5.39:5555 • android-arm64  • Android 14 (API 34)
  Linux (desktop)   • linux            • linux-x64      • Ubuntu 22.04.4 LTS 5.15.146.1-microsoft-standard-WSL2
  Chrome (web)      • chrome           • web-javascript • Google Chrome 123.0.6312.58

참고 글