개발 환경

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에 연결

  1. ADB 디버깅을 사용 설정합니다.
  2. 기기가 USB 디버깅을 지원하는지 확인합니다.
  3. Control + Alt + T를 눌러 Chrome OS 터미널을 시작합니다.
  4. shell을 입력하여 bash 명령어 셸로 이동합니다.

    crosh> shell
    chronos@localhost / $
    
  5. 다음 명령어를 입력하여 기기를 설정합니다.

    $ sudo crossystem dev_enable_udc=1
    $ sudo reboot
    
  6. 재부팅 후 터미널을 다시 열고 다음 명령어를 실행하여 Chromebook의 USB 포트에서 ADB를 사용 설정합니다.

    $ sudo ectool usbpd <port number> dr_swap
    

USB 케이블을 제거했다가 다시 연결할 때마다 이 명령어를 사용합니다. Chromebook이 UFP 모드에 있도록 하려면 ectool usbpd <port number>를 실행합니다.

  1. USB 케이블을 기기의 지원되는 포트에 연결합니다.
  2. 호스트 머신의 Android SDK 플랫폼 도구에서 adb devices를 실행하여 Chromebook이 ADB 지원 기기목록에 표시되는지 확인합니다.
  3. Chromebook에서 디버거를 허용할지 여부를 묻는 메시지가 표시되면 허용을 클릭합니다. ADB 세션이 설정됩니다.

네트워크를 통해 ADB에 연결

  1. ADB 디버깅을 사용 설정합니다.

네트워크를 통해 디버깅하려면 수신 ADB 연결을 허용하도록 Chrome OS 방화벽을 구성해야 합니다.

  1. Control + Alt + T를 눌러 Chrome OS 터미널을 시작합니다.
  2. shell을 입력하여 bash 명령어 셸로 이동합니다.

    crosh> shell
    chronos@localhost / $
    
  3. 다음 명령어를 입력하여 개발자 기능을 설정하고 방화벽 설정 변경사항에 관한 디스크 쓰기 액세스를 사용 설정합니다. 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
    
  4. sudo reboot 명령어를 사용하면 Chromebook이 다시 시작됩니다. Tab 키를 눌러 파일 이름의 자동 완성을 사용 설정할 수 있습니다. Chromebook에서 이 절차를 한 번만 완료해야 합니다.

기기가 다시 시작된 후 테스트 계정에 로그인하고 다음 명령어를 입력하여 보안 셸을 사용 설정하고 방화벽을 올바르게 구성합니다.

    $ sudo /usr/libexec/debugd/helpers/dev_features_ssh

명령이 완료되면 셸을 종료할 수 있습니다.

Chromebook의 IP 주소를 가져옵니다.

  1. 화면의 오른쪽 하단에 있는 시계를 클릭합니다.
  2. 톱니바퀴 아이콘을 클릭합니다.
  3. 연결되어 있는 네트워크 유형(Wi-Fi 또는 모바일 데이터)을 클릭한 다음 네트워크의 이름을 클릭합니다.
  4. IP 주소를 메모해 둡니다.

Chromebook에 연결합니다.

  1. 개발 머신으로 돌아가서 ADB를 사용하여 IP 주소로 Chromebook에 연결합니다.

    adb connect <ip_address>:22
    
  2. Chromebook에서 디버거를 허용할지 여부를 묻는 메시지가 표시되면 허용을 클릭합니다. ADB 세션이 설정됩니다.

네트워크를 통해 ADB 디버깅 문제 해결

모든 항목이 제대로 연결되어 있는데 ADB 기기가 오프라인 상태로 표시될 때가 있습니다. 이 경우 문제를 해결하려면 다음 단계를 완료하세요.

  1. 개발자 옵션에서 ADB 디버깅을 비활성화합니다.
  2. 터미널 창에서 adb kill-server를 실행합니다.
  3. ADB 디버깅 옵션을 재활성화합니다.
  4. 터미널 창에서 adb connect를 실행해 봅니다.
  5. 디버깅을 허용할지 여부를 묻는 메시지가 표시되면 허용을 클릭합니다. ADB 세션이 설정됩니다.