Chromebook에서 Android 앱을 실행할 수 있다는 것은 멋진 일입니다. 이를 통해 사용자는 광범위한 Android 생태계 제품에 액세스할 수 있으며 Android 개발자는 Chrome OS 사용자에게 다가갈 수 있습니다.
개발자는 사용자 환경을 개선할 수 있도록 다양한 폼 팩터에서 앱을 확인해야 합니다. 이러한 이유로 Chrome OS는 Android 개발자에게 Chromebook에서 앱을 배포하고 테스트할 수 있는 도구를 제공합니다.
개발자가 Chromebook에서 Android 스튜디오를 사용하여 Chrome OS에서 직접 Android 앱을 배포하든 다른 기기에서 Android 앱을 배포하든 상관없이 개발자는 ADB를 사용하여 앱을 배포하고 Chromebook과의 다양한 상호작용을 디버깅할 수 있습니다. 자세한 내용은 아래 단계를 확인하세요.
ADB 디버그 사용 설정
이전에는 Chromebook에서 ADB를 사용하는 것이 개발자 모드에서만 가능했습니다. 개발자 모드에서 사용하려면 기기를 파워워싱(재설정)해야 하고 보안이 저하될 수 있습니다. 다행히 Chrome 81 이후 개발자는 개발자 모드가 아닌 상태로 기기를 유지하면서도 간단한 설정 변경으로 개발한 앱을 Chrome OS에서 바로 배포할 수 있습니다. 방법은 다음과 같습니다.
먼저, Chromebook이 개발자 모드가 아닌 것을 확인합니다. 그런 다음, 설정으로 이동하여 Linux를 사용 설정합니다(이전에 사용 설정하지 않은 경우).
Linux를 사용할 수 있게 되면 Linux 설정을 엽니다. 그러면 새로운 옵션인 Android 앱 개발이 표시됩니다. 이 옵션을 엽니다.
ADB 디버깅 사용 설정으로 전환하면 컴퓨터가 다시 시작됩니다.
컴퓨터가 다시 시작되면 기기에 앱 스토어에서 다운로드하지 않은 애플리케이션이 있을 수 있음을 알려주는 메시지가 표시됩니다.
이제 ADB를 사용하여 Chromebook에 앱을 배포하고 디버깅 명령어를 실행하며 기기와 직접 상호작용할 수 있습니다.
다양한 Chromebook 기기 및 사용 가능한 폼 팩터에서 Android 앱이 원활하게 작동하도록 하려면 다음 기기에서 앱을 테스트하는 것이 좋습니다.
- ARM 기반 Chromebook
- x86 기반 Chromebook
- 터치스크린이 있는 기기와 터치스크린이 없는 기기
- 컨버터블 기기(노트북과 태블릿 사이에서 전환할 수 있는 기기)
- 스타일러스가 있는 기기
Chrome OS에서 배포
ADB 디버깅을 사용 설정한 후에는 Android 스튜디오를 사용하여 Android 앱을 Chrome OS 기기에 직접 로드할 수 있고, APK가 있는 경우에는 터미널을 사용하여 로드할 수 있습니다.
Android 스튜디오를 사용하여 배포
위에서 설명한 대로 Android 스튜디오 및 ADB를 설정한 후에는 Android 스튜디오에서 바로 Chromebook의 Android 컨테이너로 앱을 푸시할 수 있습니다. 다음과 같이 Chromebook이 기기 드롭다운에 옵션으로 표시됩니다.
이제 다른 Android 기기와 마찬가지로 앱을 푸시할 수 있습니다. ADB 승인 대화상자가 표시됩니다. 승인하면 애플리케이션이 새 창에서 실행됩니다.
이제 번거롭게 개발자 모드를 사용하지 않고 앱을 Chromebook에 배포할 수 있으며 테스트하며 디버깅할 수 있습니다.
터미널을 사용하여 배포
필요하다면 ADB를 설치합니다.
sudo apt install adb
기기에 연결합니다.
adb connect arc
USB 디버깅을 위한 승인 팝업이 표시됩니다. 권한을 부여합니다.
다음과 같이 터미널에서 앱을 설치합니다.
adb install [path to your APK]
다른 기기에서 배포
위에서 설명한 방법을 사용할 수 없는데 다른 기기에서 앱을 푸시해야 한다면 USB 또는 네트워크 주소를 사용하여 기기를 ADB에 연결할 수 있습니다.
APK를 다른 기기에서 Chromebook으로 푸시하려면 Chromebook을 구성하여 호스트 머신에서 앱을 푸시할 수 있도록 개발자 모드에서 Chrome OS를 시작해야 합니다. 개발자 모드로 전환하려면 다음 단계를 따르세요.
USB를 통해 ADB에 연결
- ADB 디버깅을 사용 설정합니다.
- 기기가 USB 디버깅을 지원하는지 확인합니다.
- Control + Alt + T를 눌러 Chrome OS 터미널을 시작합니다.
shell
을 입력하여 bash 명령어 셸로 이동합니다.crosh> shell chronos@localhost / $
다음 명령어를 입력하여 기기를 설정합니다.
$ sudo crossystem dev_enable_udc=1 $ sudo reboot
재부팅 후 터미널을 다시 열고 다음 명령어를 실행하여 Chromebook의 USB 포트에서 ADB를 사용 설정합니다.
$ sudo ectool usbpd <port number> dr_swap
USB 케이블을 제거했다가 다시 연결할 때마다 이 명령어를 사용합니다. Chromebook이 UFP 모드에 있도록 하려면 ectool usbpd <port number>
를 실행합니다.
- USB 케이블을 기기의 지원되는 포트에 연결합니다.
- 호스트 머신의 Android SDK 플랫폼 도구에서
adb devices
를 실행하여 Chromebook이 ADB 지원 기기목록에 표시되는지 확인합니다. - Chromebook에서 디버거를 허용할지 여부를 묻는 메시지가 표시되면 허용을 클릭합니다. ADB 세션이 설정됩니다.
네트워크를 통해 ADB에 연결
- ADB 디버깅을 사용 설정합니다.
네트워크를 통해 디버깅하려면 수신 ADB 연결을 허용하도록 Chrome OS 방화벽을 구성해야 합니다.
- Control + Alt + T를 눌러 Chrome OS 터미널을 시작합니다.
shell
을 입력하여 bash 명령어 셸로 이동합니다.crosh> shell chronos@localhost / $
다음 명령어를 입력하여 개발자 기능을 설정하고 방화벽 설정 변경사항에 관한 디스크 쓰기 액세스를 사용 설정합니다.
chronos
사용자의 sudo 비밀번호를 입력해야 하는 경우 Control + Alt + 앞으로 화살표를 눌러 액세스할 수 있는 VT-2 프롬프트에서chromeos-setdevpassword
를 실행하여 이 비밀번호를 (재)설정할 수 있습니다. 루트 비밀번호가 필요합니다.$ sudo crossystem dev_boot_signed_only=0 $ sudo /usr/libexec/debugd/helpers/dev_features_rootfs_verification $ sudo reboot
sudo reboot
명령어를 사용하면 Chromebook이 다시 시작됩니다. Tab 키를 눌러 파일 이름의 자동 완성을 사용 설정할 수 있습니다. Chromebook에서 이 절차를 한 번만 완료해야 합니다.
기기가 다시 시작된 후 테스트 계정에 로그인하고 다음 명령어를 입력하여 보안 셸을 사용 설정하고 방화벽을 올바르게 구성합니다.
$ sudo /usr/libexec/debugd/helpers/dev_features_ssh
명령이 완료되면 셸을 종료할 수 있습니다.
Chromebook의 IP 주소를 가져옵니다.
- 화면의 오른쪽 하단에 있는 시계를 클릭합니다.
- 톱니바퀴 아이콘을 클릭합니다.
- 연결되어 있는 네트워크 유형(Wi-Fi 또는 모바일 데이터)을 클릭한 다음 네트워크의 이름을 클릭합니다.
- IP 주소를 메모해 둡니다.
Chromebook에 연결합니다.
개발 머신으로 돌아가서 ADB를 사용하여 IP 주소로 Chromebook에 연결합니다.
adb connect <ip_address>:22
Chromebook에서 디버거를 허용할지 여부를 묻는 메시지가 표시되면 허용을 클릭합니다. ADB 세션이 설정됩니다.
네트워크를 통해 ADB 디버깅 문제 해결
모든 항목이 제대로 연결되어 있는데 ADB 기기가 오프라인 상태로 표시될 때가 있습니다. 이 경우 문제를 해결하려면 다음 단계를 완료하세요.
- 개발자 옵션에서 ADB 디버깅을 비활성화합니다.
- 터미널 창에서
adb kill-server
를 실행합니다. - ADB 디버깅 옵션을 재활성화합니다.
- 터미널 창에서
adb connect
를 실행해 봅니다. - 디버깅을 허용할지 여부를 묻는 메시지가 표시되면 허용을 클릭합니다. ADB 세션이 설정됩니다.