엔터프라이즈 OTA 업데이트

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 정책이 적용 중인지 다음과 같이 확인합니다.

  1. 자동 정책을 설정하고 TYPE_PAUSE를 지정합니다.
  2. 시스템 시계가 일시중지되어 있는 경우 OTA 업데이트를 푸시합니다.
  3. 기기가 OTA 업데이트를 가져오지 않고 사용자가 업데이트를 수동으로 설치할 수 없다는 것을 확인합니다.
  4. 기기가 A/B 기기라면 기기를 재부팅하고 재부팅으로 인해 업데이트 자동 설치가 트리거되지 않았는지 확인합니다.

정책 TYPE_PAUSE가 만료됨

만료된 TYPE_PAUSE 정책이 적용 중인지 다음과 같이 확인합니다.

  1. 자동 정책을 설정하고 TYPE_PAUSE를 지정합니다.
  2. 시스템 시계가 일시중지되어 있는 경우 OTA 업데이트를 푸시합니다.
  3. 일시중지 기간이 만료될 때까지 기다립니다.
  4. 기기가 자동으로 재부팅되고 재부팅 후 OTA 업데이트를 가져오는지 확인합니다.