OTA 업데이트

Glass Enterprise는 무선 업데이트 (OTA)를 즉시 실행할 수 없습니다. 그러나 기본 OTA 업데이트를 구성할 수는 있습니다. EE2 OTA 업데이트 기능을 사용하면 기기 소유자가 무선 업데이트 (OTA)를 다음과 같이 완전히 제어할 수 있습니다.

  • 업데이트가 저장되는 위치를 제어합니다.
  • 업데이트가 발생하는 시기를 제어합니다.
  • 업데이트 대상 빌드 제어

구성

EE2 기기에서 OTA 업데이트를 허용하려면 서버 측 및 클라이언트 측 구성이 필요합니다.

서버 측 구성

네트워크에서 액세스할 수 있는 서버에서 다운로드하도록 OTA 업데이트 파일을 호스트해야 합니다. 업데이트 파일은 시스템 이미지 페이지에서 다운로드해야 합니다.

또한 업데이트 흐름을 주도하는 JSON 파일을 호스팅해야 합니다. updater sample.json 예시와 같이 형식을 지정해야 합니다. 파일에는 페이로드 바이너리, 바이너리 길이 및 업데이트 바이너리에 OTA 바이너리를 수락하는 데 필요한 기타 메타데이터와 같은 정보가 포함됩니다.

클라이언트 측 구성

기기에서 OTA 업데이트를 확인하려면 OTA URL 및 폴링 간격을 설정해야 합니다. 인텐트를 사용하여 인텐트를 설정하는 활동을 시작할 수 있습니다. 활동 이름은 com.google.android.glass.otaservice/.OtaSettingsActivity입니다.

다음과 같은 두 가지 작업이 지원됩니다.

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • 데몬이 폴링하고 검사하는 JSON 메타데이터 파일의 URL입니다.
    • 다음 키를 포함하는 문자열을 추가합니다. com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • OTA 데몬이 폴링을 위해 깨우는 간격(밀리초)입니다.
    • com.google.android.glass.otaservice.UPDATE_FREQUENCY 키를 사용하여 숫자를 추가합니다.
    • 이 인텐트는 OTA가 아직 실행되고 있지 않은 경우 즉시 검사를 시작합니다.
    • 900,000밀리초보다 큰 숫자여야 합니다.
    • OTA가 이미 진행 중인 경우 현재 검사가 완료된 후 주파수 간격이 업데이트됩니다. 그렇게 하지 않으면 Android 잠자기에서 서비스가 중단될 수 있습니다.

인텐트는 startActivityForResult에서 전송할 수 있습니다. 성공 시 RESULT_OK 또는 실패 시 RESULT_CANCELLED와 함께 응답이 onActivityResult 콜백으로 다시 전송됩니다. 그러면 문제 해결 목적으로 메시지가 기기 로그에 파이핑됩니다.

다음과 같이 adb 명령어로 인텐트를 보낼 수도 있습니다.

adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
--es com.google.android.glass.otaservice.UPDATE_LOCATION "some_URL_for_json_file" \
-n com.google.android.glass.otaservice/.OtaSettingsActivity
adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
--el com.google.android.glass.otaservice.UPDATE_FREQUENCY 1800000 \
-n com.google.android.glass.otaservice/.OtaSettingsActivity

OTA 데몬은 주파수 설정에 따라 15분마다 JobService로 실행됩니다. JobService는 부팅 시 실행되며 업데이트된 페이로드가 수락되고 확인될 때까지 계속 실행됩니다.

백그라운드 서비스는 Wi-Fi가 온라인이고 연결된 경우에만 폴링합니다. 하지만 Wi-Fi에는 LAN만 있으면 액세스할 수 있습니다.

모든 처리가 백그라운드에서 수행됩니다. 처리 중에는 사용자 입력이 필요하지 않습니다. 알림 창에 알림이 표시되고 다음 재부팅 시 OS가 자동으로 업데이트됩니다.

단계 업데이트

OTA 업데이트를 테스트하려면 다음 단계를 따르세요.

  1. 현재 업데이트를 사용하여 기기를 다운로드하고 수동으로 플래시합니다.
  2. Glass 설정 기기 정보 카드에 현재 업데이트가 표시됩니다.
  3. Wi-Fi 네트워크에 연결합니다.
  4. json 파일을 가리키도록 adb 명령어를 실행하여 다음 업데이트로 업데이트합니다.

    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
    --es com.google.android.glass.otaservice.UPDATE_LOCATION "your_json_file_location" \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
    --el com.google.android.glass.otaservice.UPDATE_FREQUENCY 900000 \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
  5. 진행 중인 OTA에 관한 알림이 표시됩니다.
  6. OTA 알림 사라짐
  7. 다음번 수동 기기 부팅 시 기기가 업데이트되고 Glass 설정 기기 정보 카드에 새 업데이트가 표시됩니다.

업데이트 흐름

다음은 OTA 업데이트를 수행하는 표준 프로세스입니다.

  1. 부팅 시 OTA 데몬은 지정된 간격에 따라 첫 번째 실행을 예약합니다. 제공된 간격이 없으면 기본값은 15분입니다.
  2. 데몬이 메타데이터 파일을 다운로드하기 위해 웹 서버를 폴링합니다. URL이 제공되지 않으면 데몬이 종료되고 다음 실행 간격까지 대기합니다.
  3. 데몬은 적절한 플래그가 설정되었는지 확인하기 위해 메타데이터 파일에 예비 검사를 실행합니다. 오류가 있으면 데몬이 종료되고 출력을 로그에 출력합니다. 그러면 데몬은 다음 예약된 실행까지 대기합니다.
  4. 데몬은 JSON 파일의 항목을 기기에서 실행 중인 현재 빌드에서 가져온 항목과 비교합니다. 이러한 항목 간에 불일치가 감지되면 OTA 다운로드가 시작됩니다. 메타데이터 파일의 콘텐츠는 AOSP 업데이트 엔진으로 전달됩니다.

    업데이트를 일시중지할 수 없습니다. 성공하거나 실패하거나 시간 초과가 발생할 때까지 계속됩니다.

  5. 데몬은 백그라운드에서 OTA 패키지를 자동으로 다운로드합니다.
  6. OTA 패키지가 다운로드되어 성공적으로 인증되면 데몬이 새 업데이트 폴링을 중지합니다. 재부팅 시 업데이트는 실제로 적용됩니다. 다음번 재부팅 시 업데이트가 적용될 예정이라는 알림이 사용자에게 표시됩니다.
  7. OTA 다운로드에 실패하면 지정된 간격이 다시 지난 후 데몬이 웹 서버를 폴링합니다.

애플리케이션 업데이트

EE2의 애플리케이션 업데이트는 표준 Android 업데이트로 처리되어야 합니다. 다음과 같은 두 가지 주요 옵션이 있습니다.

  1. MDM 솔루션을 사용하거나 자체 기기 소유자 애플리케이션을 빌드하고 애플리케이션을 자동으로 업데이트합니다. Android API PackageInstaller를 사용하면 됩니다.
  2. 애플리케이션에서 직접 Android API PackageInstaller를 사용하여 자체적으로 업데이트되도록 합니다. 이 경우 시스템 대화상자가 표시됩니다.