Chromebook과 같은 ChromeOS 기기는 Google Play 스토어와 Android 앱을 지원합니다. 이 도움말에서는 스마트폰 또는 태블릿용으로 설계된 기존 Android 앱이 있으며 Chromebook용으로 최적화하려고 한다고 가정합니다. Android 앱 빌드 기초를 배우려면 첫 번째 Android 앱 빌드하기를 참고하세요.
앱의 매니페스트 파일 업데이트
시작하려면 Chromebook과 Android를 실행하는 다른 기기와의 주요 하드웨어 및 소프트웨어 차이점을 고려하여 매니페스트 파일을 업데이트합니다.
ChromeOS 버전 M53부터, android.hardware.touchscreen
기능을 명시적으로 필요로 하지 않는 모든 Android 앱은 android.hardware.faketouch
기능을 지원하는 ChromeOS 기기에서도 작동합니다. 그러나 앱이 모든 Chromebook에서 작동하도록 하려면 다음 예와 같이 android.hardware.touchscreen
기능이 필요하지 않도록 매니페스트 파일을 업데이트하세요.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <!-- Some Chromebooks don't support touch. Although not essential, it's a good idea to explicitly include this declaration. --> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> </manifest>
서로 다른 하드웨어 기기에는 다양한 센서 세트가 장착되어 있으며 Chromebook에는 GPS 및 가속도계와 같이 Android 휴대기기에 있는 일부 센서가 없을 수 있습니다. 하지만 센서 기능이 다른 방법으로 제공되는 경우도 있습니다. 예를 들어 Chromebook에 GPS 센서가 없는 경우가 있을 수 있지만, 이러한 Chromebook이 Wi-Fi 연결을 기반으로 위치 데이터를 제공할 수 있습니다. Android 플랫폼에서 지원하는 센서에 관한 자세한 내용은 센서 개요를 참고하세요.
센서 지원 여부에 상관없이 Chromebook에서 앱이 실행되도록 하려면 센서가 필요하지 않도록 매니페스트 파일을 업데이트합니다.
일부 소프트웨어 기능은 Chromebook에서 지원되지 않습니다. 예를 들어 맞춤 IME, 앱 위젯, 라이브 배경화면, 앱 런처를 제공하는 앱은 지원되지 않으므로 Chromebook에 설치할 수 없습니다. Chromebook에서 지원되지 않는 소프트웨어 기능의 전체 목록은 호환되지 않는 소프트웨어 기능을 참고하세요.
대상 SDK 업데이트
Android 플랫폼의 모든 개선 사항을 활용하려면 앱의 targetSdkVersion
속성을 사용 가능한 최신 API 수준으로 업데이트하세요. 다양한 버전에서 Android 플랫폼의 개선사항을 검토하세요.
네트워크 요구사항 확인
Chromebook은 Docker 또는 LXC와 마찬가지로 컨테이너에서 전체 Android OS를 실행합니다. 즉, Android가 시스템 LAN 인터페이스에 직접 액세스할 수 없습니다. 대신 IPv4 트래픽이 네트워크 주소 변환 (NAT)의 내부 레이어를 통과하고 IPv6 유니캐스트 트래픽이 추가 홉을 통해 라우팅됩니다.
Android 앱에서 인터넷으로 발신되는 유니캐스트 연결은 그 자체로 작동하지만 일반적으로 수신 연결은 차단됩니다. Android의 멀티캐스트 또는 브로드캐스트 패킷은 방화벽을 통해 LAN으로 전달되지 않습니다.
멀티캐스트 제한사항의 예외로 ChromeOS는 Android와 LAN 인터페이스 간 mDNS 트래픽을 전달하는 서비스를 실행합니다. 그렇기 때문에 LAN 세그먼트에서 다른 기기를 탐색하는 데 기본 네트워크 서비스 검색 API가 좋습니다. LAN에서 기기를 찾은 후 Android 앱은 기본 TCP 또는 UDP 유니캐스트 소켓을 사용하여 기기와 통신할 수 있습니다.
Android에서 시작되는 IPv4 연결은 ChromeOS 호스트의 IPv4 주소를 사용합니다. 내부적으로 Android 앱은 네트워크 인터페이스에 할당된 비공개 IPv4 주소를 보게 됩니다. Android 컨테이너에는 전용 공개 IPv6 주소가 있으므로 Android에서 시작되는 IPv6 연결은 ChromeOS 호스트와 다른 주소를 사용합니다.
클라우드 및 로컬 저장용량 효율적으로 사용
Chromebook을 사용하면 사용자가 한 기기에서 다른 기기로 쉽게 이전할 수 있습니다. 사용자가 한 Chromebook을 사용 중지하고 다른 Chromebook을 사용하기 시작하면 로그인하기만 하면 모든 앱이 표시됩니다.
이 기능을 사용하려면 앱 데이터를 클라우드에 백업하여 기기 간에 동기화할 수 있도록 하세요. 하지만 앱이 정상적으로 작동하도록 인터넷 연결에 의존해서는 안 됩니다. 대신 기기가 오프라인 상태일 때 사용자의 작업을 로컬에 저장하고 기기가 다시 온라인 상태가 되면 클라우드와 동기화합니다.
Chromebook은 학교와 같이 많은 사람들이 함께 사용할 수도 있습니다. 로컬 저장소는 한정되어 있기 때문에 계정과 계정의 저장소 전체가 언제든지 기기에서 삭제될 수 있습니다. 교육 환경에서는 이러한 시나리오를 염두에 둬야 합니다.
새로운 앱용 테스트 사례 개발
앱의 테스트 사례를 개발하려면 먼저 적절한 매니페스트 플래그를 지정해야 합니다. 특히 screenOrientation
를 unspecified
로 설정해 보세요. 가로 모드 방향을 지정하려면 sensorLandscape
를 사용하여 태블릿에서 최적의 환경을 만드는 것이 좋습니다.
데스크톱 환경에 특별한 크기 또는 방향이 필요한 경우 메타 태그를 크기 또는 방향 힌트로 추가하는 것이 좋습니다. 휴대전화에서 크기와 방향을 포함하려면 대신 defaultHeight
, defaultWidth
또는 minHeight
레이아웃 속성을 지정하세요.
특정 입력 기기가 특정 기기 카테고리를 처리하도록 하려면 android.hardware.type.pc
를 지정하여 입력 호환성 모드를 사용 중지합니다.
네트워킹을 사용한다면 연결 문제가 해결된 후 앱이 네트워크와 연결되는 것을 확인하거나 기기의 절전 모드에서 해제된 것을 확인해야 합니다.
테스트 계획에 사용할 수 있는 ChromeOS의 Android 앱용 테스트 사례 목록을 확인하는 것이 좋습니다. 테스트 사례는 Android 앱을 ChromeOS 기기에서 실행하려면 준비되어 있어야 하는 일반적인 시나리오를 다룹니다.
멀티 윈도우 및 방향 변경
ChromeOS의 멀티 윈도우 환경은 상태 지속성 및 리콜 문제를 더욱 분명하게 만듭니다. 해당하는 경우 ViewModel
을 사용하여 상태를 저장하고 복원합니다.
상태 지속성을 테스트하려면 앱을 어느 정도 동안 최소화하고 자원을 많이 소모하는 다른 프로세스를 시작한 앱을 복원하여 앱이 처음에 놔둔 상태로 다시 돌아오는 것을 확인해야 합니다.
전체 화면 키 (F4), 최대화 및 복원을 눌러서 창 크기 조절을 테스트합니다. 자유 크기 조절을 테스트하려면 먼저 개발자 옵션에서 자유 크기 조절을 사용 설정한 다음 앱이 비정상적으로 종료되지 않고 원활하게 크기가 조절되는지 확인합니다.
ChromeOS 기기가 지원하는 경우 노트북에서 태블릿 모드로 변경하여 모든 것이 정상적으로 작동하는지 확인합니다. 태블릿 모드에서 기기를 한 번 돌려서 방향 변경을 테스트한 다음 노트북 모드로 다시 전환합니다. 이 단계를 몇 번 반복합니다.
상단 바가 UI 요소 또는 위치 기반 터치 입력을 상쇄하여 앱을 손상시키는지 확인합니다. ChromeOS 기기의 경우 앱이 상태 표시줄 영역에 중요한 정보를 배치하지 않는지 확인합니다.
카메라 또는 펜과 같은 다른 하드웨어 기능을 사용한다면 이전에 설명한 창 및 기기 변경 시에도 정상적으로 작동하는지 확인합니다.