Android 호환성 정의 문서(CDD) 업데이트 가능한 소프트웨어를 사용하려면 기기에서 SystemUpdatePolicy
클래스를 구현해야 합니다. 기기 소유자(DO) 앱이 있다면 SystemUpdatePolicy
는 이 앱이 시스템 업데이트 설치를 제어하도록 합니다.
기기 소유자에게 알리기
무선 업데이트(OTA) 클라이언트는 시스템 API를 사용하여 수신 OTA 업데이트에 관해 기기 소유자 앱에 알려야 합니다. 또한 OTA 클라이언트는 OTA 업데이트를 처음으로 사용할 수 있는 시점을 기록하는 타임스탬프를 포함하고 있어야 합니다. OTA 클라이언트는 DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
를 호출하여 기기 소유자 앱에 알릴 수 있습니다. OTA 클라이언트에서 업데이트가 보안 패치인지 알지 못한다면 OTA 클라이언트는 DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
사용으로 되돌아갈 수 있습니다.
현재 업데이트를 사용할 수 없다면 OTA 클라이언트는 updateReceivedTime
인수를 -1
로 설정해 이를 보고합니다.
OTA 클라이언트가 OTA 서버를 폴링할 때마다 또는 OTA가 클라이언트에 푸시될 때 알림을 보내는 것이 좋습니다. 또한 알림을 더 자주 보낼 수도 있습니다.
시스템 업데이트 정책
Android 9에서는 기기 소유자가 OTA 업데이트를 최대 90일간 연기할 수 있도록 허용함으로써 기기 소유자가 업데이트를 제어하는 기능을 향상했습니다. 이 기능은 전용 기기(이전 명칭: COSU) 솔루션에 집중하여 기기 소유자가 중요한 기간 동안(예: 휴일) 기기에서 실행 중인 OS 버전을 일시중지할 수 있도록 합니다.
CDD를 준수하기 위해 OTA 클라이언트는 동작 정책을 구현해야 합니다. DO는 기기 시스템 업데이트 하위 시스템에서 준수해야 하는 다음 정책을 설정할 수 있습니다.
또한 기기 소유자는 휴일 또는 기타 사용량이 많은 시간과 같은 중요한 기간 동안 OS 버전을 고정하는 정지 기간을 설정할 수도 있습니다(Android 9 이상). 정지 기간 동안에는 시스템이 OTA 업데이트를 설치하지 않습니다. SystemUpdatePolicy.InstallationOption
사용이 권장되지만(다음 섹션 참조) OTA 클라이언트는 SystemUpdatePolicy.getFreezePeriods()
를 호출하여 기기가 정지 기간인지 확인할 수도 있습니다.
설치 옵션 구현
Android 9에서는 시스템 업데이트 클라이언트를 위해 설계된 @SystemApi, SystemUpdatePolicy.InstallationOption
을 도입했습니다.
SystemUpdatePolicy.InstallationOption
은 정책 및 정지 기간의 래퍼 클래스 역할을 합니다. 설치 옵션은 현재 시스템 업데이트 정책 또는 설정할 수 있는 모든 정지 기간을 고려하여 수신되는 시스템 업데이트에 조치를 취하는 방법 및 조치가 유효한 기간을 클라이언트에 알려줍니다. 설치 옵션은 다음 중 하나일 수 있습니다.
-
TYPE_INSTALL_AUTOMATIC
- 수신되는 시스템 업데이트가 사용 가능해지면 사용자의 개입 없이 바로 설치됩니다. 기기는 자동으로 재부팅됩니다. -
TYPE_POSTPONE
- 수신되는 시스템 업데이트를 최대 30일간 연기할 수 있습니다. 사용자가 업데이트를 수동으로 설치할 수 없습니다. 기기 제조업체에서는 보안 패치 차단 여부를 선택할 수 있습니다. -
TYPE_PAUSE
- 수신되는 시스템 업데이트가 추가 알림이 있을 때까지 무제한 지연됩니다. 사용자가 업데이트를 수동으로 설치할 수 없습니다.TYPE_PAUSE
는 보안 패치를 포함한 모든 업데이트를 연기합니다.
시스템 업데이트 클라이언트는 SystemUpdatePolicy.getInstallationOptionAt(long when)
을 사용하여 SystemUpdatePolicy.InstallationOption
을 쿼리할 수 있습니다. 여기서 when은 설치 옵션이 에포크 이후 쿼리되는 밀리초 단위의 시간을 나타냅니다. 시스템 업데이트 클라이언트는 유효 시간이 경과할 때까지 SystemUpdatePolicy.getInstallationOptionAt(long when)
메서드를 사용하여 반환되는 옵션을 대상으로 조치를 취할 수 있습니다. 반환된 옵션이 경과하면 클라이언트는 새로운 타임스탬프를 사용하여 가장 최신 옵션을 대상으로 또 다른 쿼리를 할 수 있습니다.
전체 정책이 업데이트되면 시스템 업데이트 클라이언트는 DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
브로드캐스트를 수신 대기해야 합니다.
TYPE_PAUSE
정책 확인
TYPE_PAUSE
옵션이 OTA 시스템에서 작동하는지 수동으로 확인할 수 있습니다.
정책 TYPE_PAUSE
가 적용 중임
TYPE_PAUSE
정책이 적용 중인지 다음과 같이 확인합니다.
- 자동 정책을 설정하고
TYPE_PAUSE
를 지정합니다. - 시스템 시계가 일시중지되어 있는 경우 OTA 업데이트를 푸시합니다.
- 기기가 OTA 업데이트를 가져오지 않고 사용자가 업데이트를 수동으로 설치할 수 없다는 것을 확인합니다.
- 기기가 A/B 기기라면 기기를 재부팅하고 재부팅으로 인해 업데이트 자동 설치가 트리거되지 않았는지 확인합니다.
정책 TYPE_PAUSE
가 만료됨
만료된 TYPE_PAUSE
정책이 적용 중인지 다음과 같이 확인합니다.
- 자동 정책을 설정하고
TYPE_PAUSE
를 지정합니다. - 시스템 시계가 일시중지되어 있는 경우 OTA 업데이트를 푸시합니다.
- 일시중지 기간이 만료될 때까지 기다립니다.
- 기기가 자동으로 재부팅되고 재부팅 후 OTA 업데이트를 가져오는지 확인합니다.