ChromeOS는 Android 앱 개발자가 Chromebook에 맞게 앱을 원활하게 최적화할 수 있도록 개발자 도구와 프레임워크를 개선하기 위해 최선을 다하고 있습니다. 이를 위해 Google은 개발자에게 영향력 있는 도구 세트를 제공하여 대형 화면과 ChromeOS용 빌드 환경을 개선하는 방법을 지속적으로 모색해야 합니다.
ChromeOS는 새로운 과제가 등장함에 따라 수년에 걸쳐 발전해 왔습니다. 이러한 과제 중 하나는 엔지니어에게 중요한 문제를 조기에 자주 식별하는 것입니다. 린트 규칙은 품질의 핵심입니다. 해결하지 않으면 발생하는 문제에 대해 개발자에게 플레어 신호를 제공하기 때문입니다. 업데이트된 린트 규칙은 개발자에게 ChromeOS에서 앱이 실행되는 방식을 더 잘 보여주며, 모든 ChromeOS 기기에서 실행되는 Android 애플리케이션에 문제를 일으킬 수 있는 소프트웨어 및 하드웨어 문제를 보여줍니다.
이러한 린트 규칙의 존재와 중요성에 관한 배경 맥락을 자세히 알아보려면 블로그 게시물을 읽어보세요.
이러한 린트 규칙은 어디에 있나요?
몇 개월 동안 활발하게 개발해 왔습니다. Android 스튜디오 출시 일정에 따라 일부 린트 규칙이 Electric Eel Canary 빌드에 도입됩니다. 이제 이러한 린트 규칙 중 일부를 Flamingo Canary 버전에서도 사용할 수 있습니다. 앞으로 몇 개월 안에 Android 스튜디오의 안정화 버전에서 이러한 기능을 사용할 수 있도록 계속 노력할 예정입니다.
또 다른 중요한 점은 이러한 규칙이 최신 버전의 Android 스튜디오에서 기본적으로 사용 설정된다는 것입니다. 목표는 엔지니어가 향후 ChromeOS 및 대형 화면을 빌드하는 데 도움이 되는 의견이 강한 가이드를 제공하는 것입니다.
새 린트 규칙 (Flamingo Canary 3 기준 업데이트)
x86/x86_64 ABI 지원
대부분의 Chromebook은 Intel 아키텍처에서 실행되므로 주로 x86 아키텍처 플랫폼입니다. NDK 코드가 바이너리의 일부로 포함될 때 ChromeOS가 제대로 지원되려면 x86이 있어야 합니다. 이는 ARM 라이브러리에서 필요한 변환을 삭제하여 성능을 향상하기 때문입니다. 따라서 개발팀은 ChromeOS 또는 Intel 기기의 네이티브 코드 성능에 도움이 되는 x86 또는 x86_64 아키텍처 지원을 추가하는 것이 좋습니다.
해결 방법
가능한 경우 build.gradle 내의 abiSplits 내부에 x86 및 x86_64를 추가합니다. 또한 이러한 ABI를 지원하기 위해 적절한 폴더에 코드를 추가해야 합니다. 자세한 내용은 Android ABI 문서와 ADS의 ABI 지원에 관한 강연을 참고하세요.
참고: 사용되는 서드 파티 라이브러리에도 x86 및 x86_64 바이너리가 포함되어 있는지 확인하세요.
ChromeOS 하드웨어 제한사항
대부분의 ChromeOS 기기는 Android 휴대전화에 비해 하드웨어 센서 및 기타 기능의 샘플 세트가 더 작습니다. 이 규칙의 목표는 개발자에게 android:required=true와 함께 <uses-feature> 플래그를 사용하는 경우 ChromeOS의 Google Play 스토어에서 앱을 사용할 수 없다는 점을 알리는 것입니다. 앱이 최대한 많은 기기에서 액세스할 수 있도록 하려면 하드웨어 기능이 기본적으로 필요하지 않도록 하는 것이 좋습니다. 대신 런타임에 특정 하드웨어를 확인하는 방어적 코드를 추가할 수 있습니다. 예를 들면 다음과 같습니다.
<uses-feature android:name="android.hardware.camera" android:required="true">
해결 방법
애플리케이션 내 기능이 실제로 필요한지 확인하고, 필요하지 않은 경우 android:required 매개변수를 false로 변경하고 API 호출이 필요한 경우 방어적 프로그래밍을 추가합니다. 자세한 내용은 명시적으로 선언된 기능에 관한 문서를 참고하세요.
크기 조정이 불가능한 활동
기본적으로 Chromebook에서 Android R 이상을 실행하는 ChromeOS용 Android 런타임은 기본 UI 상태에 따라 애플리케이션의 휴대전화 또는 태블릿 버전으로 Android 앱을 시작합니다. 하지만 ChromeOS 사용자에게 더 나은 환경을 제공하는 세 번째 옵션인 크기 조절 가능 모드가 있습니다. 활동의 일부로 이 플래그를 사용 설정하면 멀티 윈도우 환경에서 애플리케이션을 사용할 수 있는 사용자가 애플리케이션을 적절한 크기로 조정할 수 있습니다. 이러한 변경사항을 통해 사용자는 필요에 맞게 UI를 조정할 수 있습니다. 매니페스트에 이러한 변경사항을 추가한 후 아래에 언급된 데스크톱 에뮬레이터를 대상으로 애플리케이션을 테스트합니다.
해결 방법
AndroidManifest.xml 파일의 활동에 resizableActivity="true" 속성을 추가합니다. 자세한 내용은 대형 화면 제한사항 문서를 참고하세요.
구성 변경
크기 조절이 가능한 화면의 주요 주의사항은 사용자가 애플리케이션의 크기를 변경할 때마다 onConfigurationChanged()가 호출된다는 것입니다. 앱이 해당 메서드 내에서 전체 다시 그리기를 실행하는 경우 성능에 미치는 영향이 있습니다. 현재 저장된 인스턴스 상태를 전체 다시 그리기 강제 적용이 아닌 더 세부적으로 처리해야 하므로 finish()가 onConfigurationChanged 내에서 호출되지 않는지 확인하고 있습니다. Google은 성능 저하가 발생하는 사례를 계속 찾아 이 규칙을 업데이트할 예정입니다.
해결 방법
활동과 프래그먼트의 onConfigurationChanged() API 내에서 finish()가 호출되지 않도록 합니다. 자세한 내용은 구성 변경 처리에 관한 문서를 참고하세요.
키보드 및 마우스 지원
Jetpack Compose의 채택이 증가함에 따라 이러한 라이브러리를 사용한 빌드에 향후 마우스 및 키보드 지원 기능도 포함되도록 하고자 했습니다. 시간이 지남에 따라 마우스, 키보드, 트랙패드 및 기타 주변기기 상호작용의 유용성이 계속 향상될 예정입니다. 기준 환경을 사용하려면 Gradle 종속 항목을 최소 필수 버전으로 업데이트해야 합니다.
해결 방법
androidx.compose.foundation:foundation를 최소 버전 1.2로 업데이트합니다. 자세한 내용은 Compose 버전 출시 노트를 참고하세요.
도움말: 사용자의 90% 가 키보드와 마우스를 사용하여 Chromebook에서 앱과 상호작용합니다. (출처: 2022년 Google 내부 데이터*)
의견
팀은 대형 화면 최적화와 관련된 도구와 문서를 개선하기 위해 끊임없이 노력하고 있습니다. 이 과정에서 중요한 단계는 Android 스튜디오에 배포된 린트 규칙의 정확성과 유용성에 관한 의견을 제공하는 것입니다. 규칙에 대한 의견을 제공하면 됩니다. Android 스튜디오에 린트 규칙이 표시되면 '이 경고에 관한 의견 제공'을 클릭합니다. 아래와 유사한 대화상자가 표시됩니다. 제공된 정보가 정확하고 설명적일수록 적절한 변경사항을 빠르게 반복할 수 있습니다.
