개발자는 동적 Android를 통해 모든 Android Q 기기에서 AOSP를 테스트할 수 있습니다.

click fraud protection

Dynamic Android라는 새로운 프로젝트를 통해 개발자는 Android Q 이상을 실행하는 모든 기기에서 AOSP Android Q GSI를 테스트할 수 있습니다.

덕분에 프로젝트 트레블, 스마트폰 장치 제조업체는 적어도 플래그십 스마트폰의 경우 Android Oreo 업데이트보다 더 빠르게 Android Pie 소프트웨어 업데이트를 제공했습니다. 하지만 Google은 OEM만이 Project Treble의 이점을 누리는 것을 원하지 않습니다. 회사는 이전에 관심을 표명하다 개발자가 에뮬레이터에 의존할 필요가 없도록 Android Q의 일반 시스템 이미지(GSI)를 출시할 때 클라우드 서비스, 또는 최신 API 레벨에 대해 앱을 테스트하기 위해 자신의 기기에서 업데이트를 기다립니다. 이론적으로 GSI를 출시하면 Project Treble 호환 기기(원래 Android)를 사용하는 모든 개발자가 허용되어야 합니다. 8.0 Oreo 이상이지만 이제 Android 9 Pie로 출시되는 기기만 고려하여 최신 Android를 테스트합니다. 버전. 개발자가 해야 할 일은 기존 소프트웨어 설치 위에 시스템 이미지를 플래시하는 것뿐입니다. 사용자 지정 복구, 부팅 또는 공급업체 이미지가 필요하지 않습니다.

그러나 현재 GSI 설치 프로세스에는 몇 가지 문제가 있습니다. 먼저, 잠금 해제된 부트로더가 필요합니다. 불가능하다 Huawei 또는 Honor 기기에서(결제 없음) 비용), HMD Global의 Nokia 장치(제외 노키아 8) 또는 미국 이동통신사 브랜드 기기입니다. 다음으로, 프로세스 fastboot를 통한 이미지 플래싱에 익숙하지 않은 사람에게는 어려울 것입니다. 마지막으로 지금 GSI를 플래싱하려면 내부 저장소를 완전히 지워야 합니다. 즉, 테스트할 예비 장치가 필요할 수 있습니다. 현재 GSI 플래시는 OEM이 장치에서 Project Treble 호환성을 테스트하는 데 사용하는 것일 뿐이며, 그 이상으로는 열심히 일하는 사람들에게만 매력적입니다. 맞춤형 ROM 매니아. Google의 새로운 "Dynamic Android" 프로젝트는 이러한 상황을 변화시킬 것으로 보입니다.

동적 Android - 모든 Android Q 기기에서 AOSP GSI를 쉽게 테스트합니다.

지난 몇 달 동안 Google은 부트로더를 잠금 해제하지 않고도 GSI를 안전하게 부팅하는 방법을 연구해 왔습니다. 간단히 말해서, Google은 GSI를 다운로드하고, 저장 공간을 예약하고, GSI를 부팅 가능으로 표시할 수 있는 특별한 권한이 있는 앱을 개발하고 있습니다. 이 프로젝트에는 여러 구성요소가 있으므로 하나씩 논의해 보겠습니다.

동적 Android 및 Android On Tap

Android Q에는 Dynamic Android와 Android On Tap 서비스라는 두 가지 새로운 서비스가 추가되었습니다. Dynamic Android가 GSI 설치를 처리하는 동안 Android On Tap은 시스템 앱에 콜백 및 브로드캐스트 인텐트를 알립니다. 예를 들어 Android On Tap은 기기가 PIN, 비밀번호 또는 패턴으로 보호되는 경우 KeyguardManager에 경고하여 사용자에게 설치 요청을 확인하도록 요청합니다. AOT는 또한 사용자가 GSI로 부팅되면 사용자에게 경고합니다.

"DynamicAndroidManager"에 대한 설명에 따르면 이 서비스는 "새로운 Android Manager를 사용하는 메커니즘을 제공합니다. 이미지를 임시로 사용합니다." 설치 후 장치는 새로 생성된 이미지를 사용하여 새로 설치된 이미지로 재부팅할 수 있습니다. /data. GSI에 있는 동안 재부팅하면 사용자는 원래 시스템 이미지로 돌아가지만 새로 설치된 이미지와 해당 데이터는 비활성화될 뿐 삭제되지는 않습니다. 그러나 사용자가 이를 선택하면 GSI와 해당 데이터가 완전히 제거될 수 있습니다.

출처: [1], [2], [3], [4]

GSID

GSI 데몬은 /data 파티션에 공간을 할당하여 GSI 이미지와 해당 데이터를 저장하고 이미지를 부팅 가능하게 만듭니다. GSI의 메타데이터는 /metadata에 저장되고, GSI 자체와 해당 데이터는 /data/gsi에 저장됩니다. 기본적으로 GSID는 새로 설치된 GSI에 8GB의 사용자 데이터를 할당합니다. 일반적으로 GSID는 설치를 시작하기 전에 최소 40%의 여유 공간을 찾습니다. 마지막으로 데몬은 분명한 이유로 사용자가 GSI 내에 GSI를 설치하는 것을 방지합니다.

출처: [1], [2], [3], [4]

보안

새로 설치된 EXT4 시스템 이미지(/system에 마운트된 system_gsi)에 대해 AVB(Android 자체 검사 부팅)가 활성화되었습니다. Google은 또한 새로운 서비스에 대해 SELinux 정책을 구현했습니다. 마지막으로 GSI를 설치하려면 앱에 새로운 MANAGE_DYNAMIC_ANDROID 권한이 필요합니다. 이는 OEM이 앱에 서명해야 함을 의미하는 서명 수준 권한입니다.

출처: [1], [2]

ADB 및 Fastboot 명령

GSI는 새로운 ADB 명령을 통해서도 설치할 수 있습니다. 새로운 ADB gsi_tool 쉘 명령을 사용하면 사용자가 비활성화, 재활성화, 설치 및 보존을 수행할 수 있습니다. userdata, userdata 설치 및 생성, userdata 설치 및 삭제 또는 상태 확인 설치.

gsi_tool - command-line tool for installing GSI images.

Usage:
gsi_tool <disable|install|wipe|status> [options]

disable Disable the currently installed GSI.
enable Enable a previously disabled GSI.
installInstall a new GSI. Specify the image sizewith
--gsi-size and the desired userdata size with
--userdata-size (the latter defaults to 8GiB)
--wipe (remove old gsi userdata first)
wipe Completely remove a GSI and its associated data
status Showstatus

GSI를 관리하기 위해 두 개의 새로운 fastboot 명령이 추가되지만 fastboot는 사용자 데이터를 마운트할 수 없기 때문에 fastboot 설치가 지원되지 않습니다.

fastboot gsi wipe
fastboot gsi disable

출처: [1], [2]

이것이 누구에게 도움이 될까요?

앱 개발자가 Dynamic Android와 Android On Tap을 활용할 수 있을 것이라고 말하고 싶지만 완전히 확신할 수는 없습니다. Google이 이에 관심을 표명했지만 이 기능이 2019년부터 모든 Android Q 릴리스에서 사용 가능하다는 보장은 없습니다. Google이 아닌 OEM. 기기에서 이를 활용하려면 소프트웨어에 동일한 인증서로 서명된 GSI 선택기 앱이 필요합니다. ROM. 또한 SELinux 정책으로 인해 ADB 루트 없이 ADB에서 GSI를 설치할 수 있을지 확신할 수 없습니다.업데이트: 새로운 저지르다 GSI_tool을 사용하려면 ADB 루트가 필요함을 확인합니다. 이것이 앱 개발자가 깨끗한 Android 빌드에서 앱을 테스트하도록 의도된 것이 아니라면 아마도 CTS(호환성 테스트 도구 모음) 및 VTS(공급업체 테스트 도구 모음)를 테스트하려는 OEM의 엔지니어에게 도움이 됩니다. 장치.

XDA 인정 개발자에게 특별히 감사드립니다. luca020400 이 기사에 도움을 주셔서 감사합니다.