Android Q의 동적 시스템 업데이트: Project Treble이 향후 Android 버전을 개선하는 방법

Google은 부트로더 잠금을 해제할 필요 없이 Android Q에 GSI를 설치하는 새로운 방법인 동적 시스템 업데이트를 공개했습니다.

구글은 안드로이드 8.0 오레오 출시와 함께 공개했다. 프로젝트 트레블: Android OS 프레임워크와 공급업체 HAL 및 Linux 커널이 통신하는 방식이 크게 재설계되었습니다. Treble은 Android 플랫폼 버전을 줄이고 보안 패치 조각화, Android Pie로 출시되는 모든 Android 브랜드 기기는 Project Treble을 지원해야 합니다. OEM과 공급업체는 AOSP의 순수 기본 Android 빌드인 GSI(일반 시스템 이미지)를 부팅하고 다음을 전달하여 Treble 호환성을 테스트합니다. 공급업체 테스트 스위트 (VTS) 및 일반 시스템 이미지에 대한 호환성 테스트 도구 모음(CTS-on-GSI). GSI는 OEM을 위해 일하는 소프트웨어 엔지니어가 Treble 호환성을 테스트할 수 있게 할 뿐만 아니라 대규모 맞춤형 ROM 커뮤니티 XDA에서. Android Q 릴리스에서 Google은 GSI를 다른 그룹인 앱 개발자에게 유용하게 만들고 싶어합니다.

특정 Android 플랫폼 릴리스의 첫 번째 안정적인 릴리스와 소스 코드 드롭은 일반적으로 8 월, 실제 기기에서 다음 Android 릴리스를 테스트하려는 개발자는 업데이트가 자신의 하드웨어에 도달할 때까지 기다리지 않으려면 일반적으로 Google 스마트폰에 액세스해야 합니다. 그러나 Google은 OEM과 협력하여 안드로이드 P 베타 작년에 여러 기기에 도입했고 올해도 이에 대한 후속 조치를 취했습니다. 안드로이드 Q 베타. 공식 Android Q 베타와 함께 Google은 올해에도 다음을 출시했습니다. 공식 Q 베타 GSI 따라서 Project Treble 호환 장치를 사용하는 모든 개발자는 빌드가 장치에 도달할 때까지 몇 달을 기다리지 않고도 최신 Q 릴리스를 설치할 수 있습니다. 다음 Android 릴리스를 테스트하는 이 새로운 방법은 개발자에게 앱을 테스트할 수 있는 더 많은 기회와 시간을 제공합니다. 안드로이드의 주요 변화.

불행하게도 현재의 방법은 GSI 설치 어려울 수 있습니다. 이를 위해서는 부트로더 잠금을 해제해야 합니다. 즉, 모든 사용자 데이터를 삭제하거나 보증이 무효화되고 fastboot 프로토콜을 통해 이미지를 플래시해야 합니다. 앱 개발자가 수행하는 빠르고 간단한 프로세스는 아닙니다. 부트로더 잠금 해제도 허용합니다.. 그렇기 때문에 지난 몇 달 동안, Google은 GSI를 부팅하는 새로운 방법을 연구했습니다. 동적 시스템 업데이트(DSU)라는 새로운 기능을 입력하세요.

(이 기능은 이전에 "Live Image", "Dynamic Android" 및 "Android on Tap"이라는 이름으로 개발되었으므로 몇 주 또는 몇 달 후에 Google에서 이 기능을 다른 이름으로 부르더라도 놀라지 마십시오.)

Android Q의 동적 시스템 업데이트

DSU 기능의 목표는 개발자가 현재 설치를 방해하지 않고 GSI로 부팅할 수 있도록 하는 것입니다. 이는 부트로더를 잠금 해제할 필요가 없고 사용자 데이터를 삭제할 필요가 없음을 의미합니다. Google이 ADB를 통해 명령줄 인터페이스와 인텐트를 통해 제어할 수 있는 앱을 제공했기 때문에 설치 프로세스도 크게 단순화되었습니다. DSU를 사용하여 GSI를 부팅하는 모습은 다음과 같습니다.

이 비디오*에서는 Android Q 베타 3를 실행하는 Google Pixel 3 XL이 GSI로 재부팅됩니다. 이 환경에서 앱 개발자는 Q API 호환성을 위해 앱을 설치하고 테스트할 수 있습니다. 테스트가 완료되면 기기의 일반 Q 베타 3 소프트웨어로 다시 재부팅하기만 하면 됩니다. 기본적으로 GSI를 이중 부팅하므로 앱을 안전하게 테스트할 수 있습니다!

*DSU가 아직 공개되지 않았을 때 Google I/O 2019에서 이 영상을 녹화했기 때문에 촬영된 Pixel 3 XL의 Q 베타 3 빌드는 Google에서 DSU 지원을 포함하도록 약간 수정했습니다. Q 베타 4 이상을 실행하는 장치는 아래 요구 사항을 충족하는 경우 DSU를 지원할 수 있습니다.

동적 시스템 업데이트 요구 사항

본질적으로 이중 부팅을 시작하고 실행하는 것은 Google에게 쉬운 작업이 아니었습니다. Google의 DSU 테스트베드인 Pixel 3에서는 파티션을 관리하는 방식이 크게 변경되었습니다. 따라서 DSU 지원을 위한 첫 번째 주요 요구 사항은 장치가 지원하는 것입니다. 동적 파티션. 동적 파티션에는 시스템, 공급업체, odm, OEM, 제품 등과 같이 크기 조정 가능한 논리적 파티션으로 나누어진 하나의 실제 스토리지 파티션이 포함됩니다. GSI를 설치하는 동안 기존 사용자 데이터 파티션에서 사용되지 않은 블록을 가져와 새 시스템 및 사용자 데이터 파티션을 위한 공간이 예약됩니다. 이러한 새로운 파티션의 크기는 수 기가바이트에 달할 수 있으므로 DSU 지원은 논리적 파티션에서만 의미가 있습니다. 그렇지 않으면 기기는 GSI를 위해 몇 기가바이트의 저장 공간을 영구적으로 예약해야 합니다. 설치.

다른 요구 사항에는 복구, 시스템 또는 논리 파티션으로 부팅할지 여부를 결정하는 램디스크와 GSI의 메타데이터를 저장하는 메타데이터 파티션이 포함됩니다. 일반적으로 DSU 지원을 위한 구성 요소는 Android Q 실행 요구 사항입니다., Project Treble의 리더 Iliyan Malchev에 따르면. 우리는 확실하지 않습니다 모든 것 DSU를 지원하는 데 필요한 것은 Android Q 실행 요구 사항이지만 모든 기기는 아니더라도 대부분 Android Q로 출시될 것으로 추정할 수 있습니다. ~할 수 있다 현재 Google에서 요구하지 않더라도 DSU를 지원합니다. 지금까지 Pixel 3, Pixel 3 XL, Pixel 3a 및 Pixel 3a XL에만 동적 파티션이 있으며 이러한 장치 중 Pixel 3 및 Pixel 3 XL만 Android Q 베타 4에서 DSU를 지원합니다. DSU 지원이 필수는 아니지만 Google은 Treble 호환성에 대한 안전한 테스트를 단순화하기 때문에 OEM이 이 기능을 활성화하기를 바랍니다. 예를 들어 OEM 소프트웨어 엔지니어는 GSI를 SD 카드에 여러 장치에서 빠르게 부팅하여 Treble 호환성을 테스트할 수 있습니다.

동적 시스템 업데이트를 위한 보안

DSU는 본질적으로 두 번째 운영 체제를 혼합에 도입하므로 Google은 이 새로운 설치가 변조되어 장치의 무결성을 깨뜨릴 수 없는지 확인해야 합니다. 그래서 원래 설치와 동일한 기본 보안 보호가 GSI 설치에도 적용됩니다.: Android 자체 검사 부팅 및 SELinux 정책. 또한 INSTALL_DYNAMIC_SYSTEM 서명|권한이 있는 앱만 GSI를 시작할 수 있습니다. MANAGE_DYNAMIC_SYSTEM 서명 권한이 있는 앱은 GSI를 활성화/비활성화하거나 초기화할 수 있습니다. 설치. 이는 신뢰할 수 있는 시스템 수준 앱만 DSU와 작동할 수 있음을 의미합니다.

원본 사용자 데이터를 보호하기 위해 Google은 다음을 추가했습니다. 추가 보호 메커니즘 안드로이드 Q에서 라고 불리는 "검문소," 이 기능은 체크포인트 파티션을 원래 상태로 복원하여 사용자 데이터 파괴를 방지합니다. 하지만 체크포인트는 DSU에만 유용한 것이 아닙니다. 또한 잘못된 공격으로부터 보호하는 데에도 사용됩니다. 프로젝트 메인라인 APEX 모듈 및 A/B 오타 업데이트. (A/B 파티션이 있는 기기 이미 롤백 보호 기능이 있지만 해당 롤백에는 공장 데이터 재설정이 필요하지만 사용자 데이터 체크포인트는 그렇지 않습니다.)

GSI 설치

기기가 Pixel 3 시리즈와 같은 DSU를 지원하는 경우 GSI를 쉽게 설치할 수 있습니다. 먼저 다음 두 가지 방법 중 하나를 통해 동적 시스템 기능 플래그가 활성화되어 있는지 확인해야 합니다.

  1. userdebug 빌드를 사용하는 경우 설정 > 시스템 > 개발자 옵션 > 기능 플래그에서 settings_dynamic_android 플래그를 활성화하세요.
  2. 사용자 빌드를 사용 중인 경우 다음 adb 쉘 명령어를 실행하세요.
    setproppersist.sys.fflag.override.settings_dynamic_system 1

그런 다음 다음에서 최신 Android Q 베타 GSI를 다운로드하세요. Google 또는 장치의 OEM입니다. (DSU는 Google 또는 OEM이 서명한 GSI 설치만 허용합니다.) 다운로드한 후에는 다음을 사용하세요. 심그2img 희소 이미지를 원시 이미지로 변환합니다. gzip을 사용하여 원시 이미지를 압축한 다음 결과 아카이브를 장치의 위치에 복사합니다. 외부 저장소(예: /data/media/0/Download) 또는 실제 외부 저장소 매체(예: 물리적 SD 카드). 마지막으로 설치를 시작하기 위한 올바른 의도로 DynamicSystemInstallationService 앱을 실행합니다.

adb shell am start-activity \ -n com.android.dynsystem/com.android.dynsystem.VerificationActivity \ -a android.os.image.action.START_INSTALL \ -d file:///storage/emulated/0/Download/system_raw.gz \ --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1) \ --el KEY_USERDATA_SIZE 8589934592

다시 시작을 클릭하면 GSI로 부팅됩니다. GSI에서 기기의 유용성은 기기의 OEM이 Treble을 얼마나 잘 구현했는가(또는 Treble을 얼마나 적게 위반했는지)에 따라 달라집니다. 호환성.) 일부 장치는 다른 장치보다 GSI에서 더 잘 작동하지만 일반적으로 이 설치를 매일 사용하지는 마십시오. 운전사. 앱을 테스트한 다음 재부팅하여 종료해야 합니다. 추가 테스트를 위해 GSI 설치를 유지하려면 다음을 사용할 수 있습니다. gsi_tool 쉘 명령.

DSU에 대한 전체 GSI 설치 지침을 찾을 수 있습니다. 여기. 버그는 다음에 제출할 수 있습니다. 구글 이슈 트래커,레딧, 또는 스택 오버플로.

동적 시스템 업데이트의 이유

Google I/O에서 Iliyan Malchev와 대화했을 때 그는 Treble 팀의 Hung-ying Tyan이 초기 GSI 액세스에 대해 말한 내용을 반복했습니다. 11월 Android Dev Summit. Google은 DSU를 다음과 같이 만들었습니다. 최대한 폭넓은 청중으로부터 피드백을 요청하세요.. 목표는 GSI의 품질을 향상시키는 것입니다. 향후 Android 릴리스의 품질을 향상시킵니다. GSI는 가장 순수한 형태의 Android이기 때문입니다. Google은 현재 차기 버전 GSI 호환성(예: Android Q 시스템 이미지가 Android P에서 얼마나 잘 작동하는지 테스트하는 유일한 회사) 공급업체 구현) 그러나 더 많은 사람들이 GSI를 플래시하고 피드백을 제공함에 따라 OEM은 Treble 호환성 위반을 수정하여 GSI가 더 나은 환경에서 작동하도록 할 수 있습니다. 미래. Iliyan은 이전 Android 릴리스의 공급업체 이미지를 다음 버전 시스템 이미지와 함께 재사용하는 데 OEM 및 Qualcomm과 같은 공급업체의 큰 관심이 있다고 말했습니다. DSU와 같은 이니셔티브는 Google과 OEM이 VTS 및 CTS-on-GSI와 같은 자동화된 테스트의 적용 범위 격차를 메우는 데 도움이 됩니다. 따라서 Google은 다음 Android 릴리스에 대한 피드백을 제공하기 위해 더 많은 베타 테스터를 확보하는 동시에 OEM이 작업을 개선할 수 있도록 Treble 호환성 위반에 대한 소식도 듣습니다.

Android Q에 동적 시스템 업데이트를 추가하는 것은 환영하지만 일부 사람들이 기대하는 듀얼 부팅 솔루션은 아닐 것입니다. 앞서 언급했듯이 Google 또는 OEM이 서명한 시스템 이미지만 설치할 수 있습니다. 대체 Android 생태계를 지원하기 위해 DSU를 확장할 가능성에 대해 Iliyan에게 물었을 때 그는 DSU가 단순히 시스템을 전달하는 채널이기 때문에 기술적으로 그렇게 하는 것이 가능하다고 말했습니다. 이미지. 모든 OEM이 원하는 대로 사용할 수 있습니다. 최종 결과가 Android와 호환되는 한. Google은 여기서 OTA 시스템에 대한 대안을 만들지 않았으며 DSU는 진정한 이중 부팅에 사용하기 위한 것이 아닙니다. 그럼에도 불구하고 Google이 Treble에서 수행한 작업은 Android를 더욱 모듈식으로 만들고 있으므로 앞으로 기본 이중 부팅이 현실화되더라도 놀라지 않을 것입니다.