Update production devices in the field with the Android Things Console (Google I/O ’18)

[음악 재생] ADAM RODRIGUEZ : 안녕하세요 Android Things에 대한이 이야기에 오신 것을 환영합니다

우리와 함께 계셔서 다행입니다 나는 아담이야 저는 Google의 제품 관리자입니다 AMY JANG : 저는 Amy입니다 Android Things Console 용 엔지니어링을 이끌고 있습니다

ADAM RODRIGUEZ : 오늘 우리는 Android Things 콘솔을 사용하는 방법에 대해 이야기하고 싶습니다 필드에서 생산 장치를 업데이트하십시오 IO에서 몇 가지 다른 회담을 통해 잘 배웠으므로, 안드로이드 것들은 훌륭한 플랫폼입니다 자기 자신을 만들기 위해서 그러나 실제로 둘 이상을 만드는 것에 관해서는 무언가, 어떻게 유지합니까? 그 장치는 평생 동안? 기기를 사용하면 어떻게 지원하나요? 고객의 손에? 그게 오늘 우리가 너와 얘기 할 때 온거야 승인

그럼 정말 빠른 리뷰를 해봅시다 Android Things는 무엇이고 왜 당신이 그것을 원할 수도 있습니다 우선, 그것은 안드로이드의 힘을 가지고 있습니다 당신이 알고 사랑하는 것과 동일한 도구로 개발 된, Android 개발자 인 경우 결국 안드로이드이기 때문에 쉽습니다 둘째, 프로토 타입에서 생산으로 확장됩니다

하드웨어 엔지니어 또는 펌웨어 엔지니어 일 필요는 없습니다 이것을하기 위해 우리는 완벽하게 인증 된 SoM을 제공합니다 Android는 AOSP가 아니기 때문에 우리가 사용하는 것을 사용합니다 당신이 필요로하는이 이야기에 대해 이야기하기

Android Things SoM을 사용합니다 이점은이 SoM 플랫폼 용으로 제작되었습니다 따라서 Android 코드를 작성하면됩니다 저수준 펌웨어에 대해 걱정할 필요가 없습니다 해당 하드웨어를 구동합니다

마지막으로 자동 업데이트로 보안 기능이 내장됩니다 인증 된 SoM으로 개발하고 있으므로, Google에서 기기의 보안을 관리 할 수 ​​있습니다 Google은 업데이트 및 보안 픽스를 제공합니다 평생 동안 구현할 수있는 귀하의 제품의 Android Things의 목표는 사용자가 쉽게 작업 할 수 있도록하는 것입니다

쉽고 안전하며 관리가 쉽습니다 그러나 이것은 질문을 제기합니다 IoT는 왜 그렇게 열심히일까요? 이 문제에 대해 정말로 걱정할 필요가 있습니까? 그래서 그것에 대해 조금 생각해보십시오 몇 천 명이나되는 사람을 배로 데려다 줄거야 IoT 장치를 보호하십시오

건물의 어려운 일을해야 할 것입니다 장치, 하드웨어 설계, 소프트웨어 작성 어렵지만 특별한 소스이기도합니다 그것은 당신의 장치를 독특하게 만듭니다 하지만 그 외에는 다른 것들이 많이 있습니다 당신도해야합니다

다른 엔지니어들과 어떻게 개발을 공유합니까? 장치를 안전하게하려면, 최신 보안 패치를 항상 최신 상태로 유지해야합니다 해당 패치를 발견하면 장치가 해당 패치를 가져올 수있는 방법을 구축해야합니다 그런 다음 어떻게 안전하게 업데이트합니까? 업데이트가 나 빠지면 어떻게 할 수 있습니까? 고객의 기기를 손상시키지 않았는지 확인하십시오 델타 업데이트, 부분 롤아웃, A / B 설계를 상상해보십시오 파티션, 채널 관리

성공적인 IoT를 위해 필요한 모든 것 그러나 모든 인프라를 유지 관리하고 업데이트해야합니다 방대한 직업이다 우리가 앞서 말했던 것처럼, 우리의 목표 Android Things를 사용하면 더 쉽게 사용할 수 있습니다 하드웨어와 소프트웨어 디자인은 여전히 ​​당신에게 달렸습니다

그것이 있어야하는 것처럼 그것은 당신의 제품을 특별하게 만드는 것입니다 그러나 우리는 당신이 Android Studio와 같은 모든 친숙한 도구를 사용할 수 있습니다 그리고 그것을하는 [INAUDIBLE] 그러나 펌웨어 코드를 신경 쓰지 않아도됩니다

Android Things의 SoM 모델을 관리합니다 그런 다음 보안 업데이트와 관련하여, Android 팀 전체를 활용할 수 있습니다 보안 구멍을 찾아 수정하십시오 자동 업데이트와 함께 문자 그대로 0이 붙은 보안 패치 당신과 당신의 관계 마지막 장치를 보내십시오 또한 업데이트를 위해 동일한 기술을 활용하고 있습니다

매일 수백만 개의 장치를 업데이트하는 데 사용되었습니다 강화되고 검증되었으며 최적화되었습니다 따라서 실제로 차별화되는 부분에 집중할 수 있습니다 귀하의 제품 – 작성한 기능 및 응용 프로그램 AMY JANG : 예를 들어 보겠습니다 Android Things가 어떻게 도움이되는지 확인해보십시오

아담과 내가 세탁물 접기를하고 있다고 상상해보십시오 로봇, 솔직히 말하자면, 아무도 양말 접기를 좋아하지 않기 때문에, 권리? 그래서이 로봇은 많은 물체 인식, 비전을 사용합니다 기계 학습, 완벽한 사용법 Android 관련 항목입니다 프로토 타입에서 어떻게 가져 옵니까? 내가 집에서 지어서 모든 사람이 사용할 수있게 만들었습니까? 이것은 우리 콘솔의 마술이 들어오는 곳입니다 Android Things는 의도적으로 설계되었습니다

하드웨어를 쉽게 개발할 수 있도록 그것을 시장에 선적하십시오 그리고 Android Things 콘솔을 사용할 수 있습니다 당신의 모든 필요를 돌보아야합니다 첫 번째 구성 – 장치 관리를 정의합니다 우리가 제품이라고 부르는 그룹과 Android Studio와 같은 편집기를 사용하여 작성한 앱, [INAUDIBLE] 콘솔을 사용하여 앱을 관리 할 수 ​​있습니다

빌드 기능을 사용하면 앱으로 안전한 Android Things 이미지를 만들 수 있습니다 당신이 방금 썼던, 그리고 릴리스 단계에서, 원활한 업데이트를 장치로 푸시 할 수 있습니다 분석을 사용하여 출시가 완료되었는지 확인하십시오 부드럽게 그럼 어떻게 작동하는지 자세히 살펴 보겠습니다

ADAM RODRIGUEZ : 좋습니다 프로토 타입에서 생산에 이르는 첫 번째 단계 제품 콘솔에 세부 정보를 설정하는 것입니다 당신이 지을 계획입니다 세탁 로봇을 구성 해 봅시다 먼저 제품 이름을 설정하고 모델을 만듭니다

몇 가지 SKU가 있다고 상상해보십시오 어쩌면 영국 SKU와 US SKU가 있습니다 모델로 제품을 분해 할 수 있습니다 다른 버전으로 다음으로 SoM 유형을 선택하려고합니다

필요한 기능과 가격을 기반으로 SoM을 선택하십시오 당신이 치고 싶은 지점 SoM을 선택하는 것은 중요합니다 나중에 만들려는 이미지에 대해 많은 것을 제어합니다 하나의 메모

하나의 SoM으로 빌드를 시작한 다음이를 변경하려는 경우, 많은 코드를 다시 작성하지 않고도 쉽습니다 그것은 내가 개인적으로 실제로하는 것들 중 하나입니다 우리가 관리하는 SoM 모델에 대한 사랑 정말 비싼 물건으로 시작할 수 있습니다 일단 생산 단계에서 비용을 절감하려면 다운 그레이드하십시오

아니면 정말 싼 것을 함께 해킹 할 수 있습니다 공연이 당신의 필요를 충족시키지 못한다면, 보다 강력한 SoM으로 업그레이드 할 수 있습니다 마지막으로 제품 공유도 설정하십시오 Amy와 나는이 laundroid를 함께 만들고 있기 때문에, 우리는 콘솔을 통해이 제품에 대한 액세스를 공유합니다 그래서 우리 중 누구도 앱을 업로드하고 빌드를 만들 수 없습니다

제품 구성이 완료되면, 다음 단계는 앱을 작성하는 것입니다 앱은 Android의 핵심이며 Android Android 예외는 아닙니다 그들은 내부의 모든 기능을 정의합니다 Android Things의 Amy가 양말 접기 기능을 작성했을 때, 그녀는 [INAUDIBLE] APK에서 그렇게했습니다 친숙한 모든 도구를 Android로 사용할 수 있습니다

개발자– Android Studio, Kotlin, Google Play 서비스, Firebase 이 모든 것은 단지 다시 작동하기 때문에 결국 안드로이드 일뿐입니다 앱이 작성되면 앱 라이브러리에 업로드합니다 빌드에 추가 할 수 있습니다 여기에서 볼 수 있듯이 4 가지 앱이 있습니다 우리의 세탁 로봇의 기능이 깨졌습니다

또한 앱 라이브러리는 버전 관리, 그래서 새로운 버전의 앱을 가지고있을 때, 도서관은 당신에게 가장 최근의 것을 보여주기 위해주의를 기울입니다 내가 정말 좋아하는 한 곡은 앱 공유입니다 공동 작업자와 제품을 공유 할 수있는 것처럼, 당신도 애플 리케이션을 공유 할 수 있습니다 Android 자체는 앱을 만드는 데 필요한 모든 것입니다 다른 사람들이 사용할 수있는 Android 환경 여기도 예외는 아닙니다

다른 사람들과 귀하의 앱을 공유하십시오 팀 또는 유사한 제품을 만드는 다른 사람들에게 오늘은 아마 너만 갈거야 더 많은 사람들이 빌드하면서 자신이 쓴 앱을 사용하려면 Android 관련 항목에서 앱을 사용하고 있음을 알 수 있습니다 다른 사람들이 유틸리티와 공통 기능에 대해 썼다 AMY JANG : 이제 이미지를 빌드 할 차례입니다

너희들이 쓴 안드로이드 것들 애플 리케이션으로 우리의 경우에는 새로운 양말을 썼습니다 APK 우리 로봇에게 몇 가지 멋진 양말 접기 기능을 제공합니다 Adam이 방금 앱 라이브러리에 업로드했습니다 콘솔에서도 나와 공유했습니다

이제 우리는이 기능을 추가했습니다 그것을 패키지에 담을 때입니다 귀하의 장치에 빌드 및 플래시 그래서 Build는 모든 재료가 모이는 곳입니다 앱, Google Apps, 하드웨어 구성 장치에 맞게 사용자 지정할 수 있습니다

여기에서 선택한 옵션 세트 우리가 빌드 구성이라고 부르는 것입니다 빌드 구성은 비밀스런 소스와 규칙과 같습니다 장치의 내용을 지정하는 구성 영상 그리고 장치 이미지에 따르면, 나는 이미지 기기로 플래시하고 페이로드를 만드는 이미지 over the air update 따라서이 빌드 단계에서 새롭고 많은 것을 만들 수 있습니다

구성을 작성하고 관리하십시오 대부분의 사람들은 방금 구입했을 것입니다 또는이 I / O에서 개발자 키트를받습니다 시작하려면 시작 키트 사용 설정을 선택하고, 모든 빌드 세부 정보가 미리 채워집니다 이 예제에서는 예제를 살펴 보겠습니다

처음부터 시작하는 것 첫째, 가장 중요한 것들 중 하나 Android Things OS 버전을 선택하는 것입니다 최신 버전을 선택하십시오 그 (것)들은 최신 버그가 있기 때문에 편안함 수정 및 보안 업데이트 최신 버전을 사용해야하는 것은 아닙니다

하지만 이런 이유로 추천합니다 다음 단계에서는이 단계에서 앱 목록을 볼 수 있습니다 앱 라이브러리에 업로드 한 빌드에 포함 할 앱을 선택하십시오 Google에서 제공하는 앱을 포함하는 것을 잊지 마십시오 Google Play 서비스와 같은 그리고 왜 Google Play 서비스를 원하십니까? Google Play 서비스를 사용하면 앱 Nearby와 같은 최신 Google API를 활용할 수 있습니다

지도, Firebase, 새로운 [INAUDIBLE] 키트 포함 Google Play 서비스 패키지에 포함되어 있습니다 대화 상자에 표시된 확인란을 클릭하기 만하면됩니다 귀하의 빌드에 포함될 것입니다 ADAM RODRIGUEZ : 좋습니다 그래서 다시 빌드합니다

앱을 선택하고 나면 해당 앱에서 요청하는 권한 그 (것)들과 당신이 좋다는 것을 확인하십시오 사용자가 권한을 선택할 수 없기 때문에 일반 Android와 마찬가지로 자신에게 달려 있습니다 그들을 위해 그것을 할 수 있습니다 스스로 개발 한 앱만 사용하는 경우, 여기에 어떤 놀라움도 있어서는 안됩니다 하지만 다른 사람들이 공유하는 앱을 사용하는 경우, 봐야 할 가치가있어

이것은 당신이 잘못한 일을 막는 데 도움이됩니다 예상하지 못했고, 좋은 보안 조치였습니다 Android Things가 점점 보편화되면서, 다른 사람들이 건물을 지켜 보는 것이 놀랍지 않을 것입니다 다양한 소스의 공유 응용 프로그램이있는 IoT 제품 따라서 권한을 보는 것이 중요합니다 다음 단계는 추가하는 것입니다

빌드에 리소스를 구축하십시오 장치에 디스플레이가있는 경우 여기에서 보는 것처럼 부팅 애니메이션을 추가 할 수 있습니다 Lenovo 스마트 디스플레이 용 사용자 정의 bootanimationzip을 업로드 할 수 있습니다

이 섹션에서는 또한 글꼴을 포함하려는 경우 이 장치들 중에는 디스플레이가 없기 때문에, 우리는 글꼴로 그들을 부담시키고 싶지 않습니다 이 작은 IoT의 이미지 크기를 줄이는 것이 전부입니다 제작품 이제 Android 기기가별로 흥미롭지 않습니다 그것이 바로 SoM 이었다면

하드웨어 구성은 주변 장치를 추가하는 곳이며, GPIO 및 버스 속도를 제어하십시오 스타터 키트는 사전 설정되어 있습니다 시동기 장비에서 제공하는 하드웨어 구성 짓다 그러나 구성을 멋지게 만들 수 있습니다 다르게

이 UI 도구를 사용하여 조정할 수 있습니다 이 도구는 현재 버스 제어에 국한되어 있지만 속도 및 풀 업 저항이 모든 주변 장치를 구성 할 것이며, 디스플레이, 오디오 버스, 스피커와 같은 우리는 또한 여기서 I / O를 제어 할 계획입니다 그래서 당신은 핀 복싱을 할 수 있고, 어떤 핀들이 어떤 기능에 붙어있다 따라서 더 많은 업데이트를 위해이 공간을 조심하십시오 AMY JANG : 자, 이제 최종 빌드 단계에 있습니다

당신이 만든 구성들 총 예상과 함께 표시됩니다 OEM 파티션 크기 요약에서 예상 크기 검토 원하는대로 OEM 파티션의 전체 크기를 설정하십시오 이 파티션이 무엇인지, 그리고 개발자로서 변화시킬 수 있습니까? 그리고 어느 파티션이 무선으로 업데이트 할 수 있습니까? 최신 정보? 그 대답을하기 위해 Android Things 파티션 레이아웃을 살펴 보겠습니다 잠시 동안

왼쪽에는 IMX7D PICO의 간단한 파티션 레이아웃이 있습니다 이것이 개발자 키트에서 얻은 보드입니다 SOC 벤더 사이에는 작은 차이가 있습니다 보드 하지만 예제를 살펴 보겠습니다 코어 안드로이드 것들에 의해 사용되는 파티션 아키텍처는 모든 SoM에서 동일합니다

시스템, 시스템 및 부팅은 읽기 전용 파티션이므로, Android 용으로 생성되어 사용됩니다 플랫폼 부팅은 커널을위한 것이며 램 디스크는 정상 부팅을위한 것입니다 그리고 시스템은 Android Things OS가로드되는 곳입니다 Vbmeta는 읽기 전용 파티션입니다

그리고 이는 검증 된 부팅 메커니즘에 사용됩니다 이름에서 알 수 있듯이, 이것은 확인 된 부팅에 대한 메타 데이터가 기록됩니다 특히 Google에서 생성 한 단일 해시입니다 부트, 시스템 및 벤더에 대한 정보를 사용하여, Google에 저장된 보안 키로 서명했습니다 장치의 모든 부팅 순서에 대해, 부트 로더가 코드가 진짜임을 확인합니다

알려진 보안 결함이 없었습니다 이 정보를 사용하여 발견되었습니다 임의의 조작이 발견되면 장치가 부팅되지 않습니다 따라서이 파티션으로 주위를 어지럽히고 싶지는 않습니다 공급 업체는 읽기 전용 파티션이기도합니다

이 파티션에서는 SOC 공급 업체의 바이너리 이미지 로드됩니다 SOC 관련 드라이버 라이브러리와 같은 것들 보통 여기에 넣습니다 OEM과 OEM 부트 로더는 Android 용 파티션입니다 개발자, 그게 당신입니다 그것이 생성 된 후에 그것은 의미에서 읽기만합니다, 내가 방금 보안상의 이유로 훼손 될 수는 없어

얘기 했어 그러나 OEM은 콘텐츠가 콘솔을 통해 지정한 빌드 구성 에 기록됩니다 그래서 그 의미에서 재기록이 가능합니다 Android Things 개발자가 콘솔을 통해 관리합니다 이 OEM 파티션도 새로 생성됩니다

구성 4에서 새 빌드를 만들 때 오타에 그리고 OEM 부트 로더는 파티션입니다 어떤 하드웨어 구성을 선택했는지 그 빌드도 작성되었습니다 Android 개발자 인 경우 이 파티션, 사용자 데이터에 익숙 할 수 있습니다 시스템 및 앱이 사용자를 작성하는 곳입니다

런타임시 데이터 그 외에도 ADB 설치를 통해 설치하는 APK, 또는 Android Studio의 재생 버튼 또한이 파티션에 기록됩니다 그래서 이것은 실제로 질문을 제기합니다 패키지 이름은 앱의 고유 식별자입니다 동일한 패키지 이름이 사용자 데이터와 OEM에 모두있는 경우, Android 패키지 관리자는 어떻게했을까요? 어떤 앱을 사용해야하는지 알고 있습니까? OEM은 생성 된 후에 만 ​​읽을 수 있습니다

이미 거기에 쓰여진 APK 있는 그대로 존재해야합니다 당신이 개발할 때, 당신은 ADB 설치를 통해 APK가 변경 될 가능성이 큽니다 이 개발 흐름을 존중하기 위해 ADB 사용자 데이터에 설치된 APK는 항상 OEM 제품보다 영예 롭습니다 이것이 의미하는 바는 APK가있는 경우 사용자 데이터와 OEM 모두에서 APK가 OEM을로드하고 사용자 데이터에서 APK를 삭제합니다 설치시 ADB에 의해

Misc는 플랫폼에서 사용되는 또 다른 읽기 전용 파티션입니다 부트 로더와 같은 기타 요구 사항에 적합합니다 기능에 대한 우리의 시스템 공장과 그 부트 로더 파티션 모든 장치 별 구성을 위해 예약되어 있으며, 같은 일련 번호, 공장에서 작성된 것입니다 이는 서비스 센터에서 나중에 수행 할 수도 있습니다

이 파티션은 개발자와 공장에서 쓰기 가능하며, 배송 된 후에야 읽을 수 있습니다 따라서이 파티션에 쓰기 위해서는 특별한 도구와 권한을 제공합니다 그래서 지금까지 모든 파티션을 살펴 보았습니다 안드로이드 것들 코어 아키텍처가 사용하는 이 테이블의 파티션을 보셨을 것입니다

a와 b의 두 섹션으로 중복됩니다 그게 무슨 뜻이야? 이것은 OTA가 공중 갱신에 오는 곳이다 OTA는 AB 파티션 메커니즘으로 작동하며, 동일한 파티션 종류가 두 개의 중복 메모리에 존재하는 경우 공백 이 아키텍처는 사용자에게 끊김없는 업데이트를 제공합니다 장치는 여전히 활성 파티션에서 활성 상태 일 수 있습니다 업데이트가 다운로드 및 설치되는 위치 비활성 파티션 A에 B

그래서 모든 일이 끝난 후, 보안 부팅 메커니즘으로 재부팅 한 후, 장치가 파티션으로 깨어납니다 업데이트가 설치된 위치 또한 모든 읽기 전용 Android 항목 파티션은 특정 크기로 고정됩니다 그리고 아시다시피, 보드 메모리도 고정되어 있습니다 이것이 의미하는 바는 나머지 고정 된 OEM 파티션과 사용자 데이터간에 분할 될 메모리 분할

그리고 당신은 분할이 둘 사이에 무엇인지 결정할 것입니다 그럼 예제를 살펴 보겠습니다 그래서 LTS OS, 몇 가지 앱을 선택했다고 가정 해보십시오 Google Play 서비스, 맞춤 하드웨어 설정 이 콘솔의 [INAUDIBLE]보기에서, 당신이 마지막 빌드 단계에서 본, 우리는 모든 핵심적인 세부 사항을 없앴습니다

지금까지 본 시스템 파티션 중 따라서 마지막 슬라이드에서주의를 기울이지 않았다면, 괜찮아 당신이 알아야 할 것은 시스템 파티션 고정 크기입니다 따라서 OEM 파티션 크기 입력은 입력을 요청합니다 단일 OEM 파티션의 크기가 될 것입니다 이것이 의미하는 바는 OEM의 크기를 늘리면 100 분할, 사용자 데이터 파티션 200에서 뺍니다

파티션에 대한 가장 중요한 메시지는 다음과 같습니다 이 이야기에서 벗어나야합니다 적합한 OEM 파티션 크기 선택 제작 이미지를 만들 때 중요합니다 장치가 선택된 크기로 구워지면, 그들은 크기 레이아웃으로 고정되어있다 그들이 reflashed 때까지

AB와 OTA 메커니즘의 특성 때문입니다 우리는 방금 이야기했습니다 따라서 이러한 기기는 OTA 업데이트 만 수신합니다 동일한 파티션 크기로 빌드하십시오 크기를 설정할 때 한 가지 권장 사항 미래 성장을위한 완충 공간을 남겨 두는 것입니다

APK에 새로운 기능을 추가하고자 할 수 있습니다 새로운 멋진 부팅 애니메이션처럼 더 추가 할 수도 있습니다 더 많은 메모리가 필요할 수 있습니다 미래에 대한 계획과 예상 앱 성장과 데이터의 차이 성장 다시 말하지만 아직 계획 할 필요가 없습니다

프로토 타이핑 및 개발 단계에있을 때, 올바른 크기를 찾는 것에 대해 걱정할 필요가 없습니다 언제든지 장치를 다시 칠할 수 있기 때문입니다 이 값을 예측하고 마무리해야합니다 당신이 생산 이미지를 만들 때 이제 올바른 크기를 선택하고 빌드를 만들고, 빌드 구성을 작성하면, 두 가지 이미지 옵션 중 하나를 선택할 수 있습니다

개발 및 생산 개발 빌드는 디버깅 기능을 제공합니다 ADB와 마찬가지로 최종 사용자가 안전하고 사용하기를 원한다 디버깅을 제공하지 않습니다 장치가 프로덕션 이미지로 플래시되면, 보안상의 이유로 훼손 될 수 없습니다

따라서 디버깅이 가능하도록 복구해야합니다 다운로드를 클릭하면 이미지가 생성됩니다 브라우저를 통해 다운로드가 시작됩니다 이제 이미지 파일을 다운로드했습니다 파일에서 내 장치로 어떻게 가져 옵니까? 우리는이 모든 슈퍼를 만들기 위해 플래시 스크립트 도구를 제공합니다

쉽고 간단합니다 도구 섹션으로 이동하기 만하면됩니다 스크립트를 다운로드하십시오 스크립트의 지시 사항을 따르십시오 그리고 그것은 모두 꽤 간단해야합니다

기기를 바로 사용할 수 있습니다 스크립트 대신 빠른 부팅을 사용할 수도 있습니다 네가 원한다면 그래서, 우리는 건물을 완성하고 다운로드를합니다 Android Things 기기 준비하기 ADAM RODRIGUEZ : 맞아

이 시점까지는 빌딩에 관한 것이 전부였습니다 기능을 Android Things 기기에 추가 할 수 있습니다 Android Things 덕분에 개발이 쉬워 지지만, 당신은 아마 같은 일을했을 수도 있습니다 거기에 다른 플랫폼이 많이 있습니다 그러나 릴리스는 상황이 실제로 달라지는 곳입니다

새 기능 업데이트, 지원, 푸시, 귀하의 기기뿐만 아니라 수천 개의 기기로 해당 영역에서 이것은 Android Things가 실제로 빛나기 시작하는 곳입니다 나는 왜 두 가지 이유가 있다고 말하고 싶다 운영 체제로 Android Things를 선택할 수 있습니다 첫째, 당신은 안드로이드의 힘을 좋아합니다

당신은 그것에 익숙하고 익숙합니다 또는 두 가지, 하나 이상의 것을 만들 계획입니다 에이미와 나는이 세탁 로봇을 가지고있다 그녀는 양말을 접는 방법을 알고있는 세탁 로봇을 가지고 있습니다 하지만 내 집에있는 빨래 로봇은 양말을 접는 방법을 모른다

우리가 로봇에 얹혀있는 빌드를 어떻게 얻습니까? 안드로이드 것들로 아주 쉽게 먼저 채널을 사용하여 기기 인구를 분산시킵니다 고객이 소유 한 장치가 몇 개있을 수 있습니다 테스터들이 소유 한 몇 가지 다른 것들 그리고 당신은 그들 모두가 동일한 빌드를 얻는 것을 원하지 않습니다

따라서 채널을 논리적으로 구분할 수 있도록 채널에 배치하십시오 또한 맞춤 채널을 만들고, 품질 보증 (QA) 채널을 말하고, 또는 파란색을 좋아하는 사람들을위한 채널 사물을 더 나눕니다 채널을 통해 원하는대로 할 수 있습니다 그러나 당신이 약간의 지침서를 원한다면, 카나리아 일반적으로 빌드를 가져 오는 첫 번째 장치입니다 탄광 관용구의 카나리아에 대한 언급입니다

새로운 빌드에 문제가 있다면, 카나리아 장치가 먼저 그것에 대해 알려줍니다 Dev는 일반적으로 개발자 기기가 앉아있는 곳입니다 많은 새로운 기능, 많은 버그, 하지만 적어도 그들은 부팅 베타는 테스터를위한 것입니다 이들은 실제 사용자입니다

약간의 피드백을줌으로써 새로운 기능을 얻는다 출시되지 않은 소프트웨어에 대해 그리고 사용자의 대량 구매가 안정적입니다 이러한 빌드는 많은 테스트를 거쳤으며 모든 것이 작동합니다 마지막으로, 사용자 정의는 원하는대로 할 수 있습니다

개발자의 미리보기에서 우리는 많은 피드백을 얻었습니다 사람들은 많은 채널을 원했습니다 여러 가지 방법으로 기기 인구를 나눌 수 있습니다 그래서 우리는 그들을 위해 맞춤 채널을 만들었습니다 좋아, 이제 너는이 채널들을 가지고 있고, 어떻게 이러한 채널에 기기를 가져 옵니까? 처음부터? 장치는 안정 채널로 기본 설정됩니다

그러나 채널을 변경하려면 API를 통해 설정하거나 기기를 연결할 수 있습니다 여기에 보이는 것처럼 ADB를 플래시하십시오 명심할 것은 한 가지입니다 에이미가 석방에 대해 어떻게 이야기했는지 기억해 개발 이미지 vs

새로운 채널로 기기를 플래시 할 수 있습니다 그것이 개발 이미지를 실행하고 있다면 하지만 공개 이미지를 실행중인 경우, 깜박이고 ADB가 차단됩니다 따라서 채널을 변경할 수도 없습니다 최종 사용자가 실행되지 않도록하기 위해 원치 않는 코드 또는 악의적 인 코드가 포함될 수 있습니다

승인 이제 채널을 할당 했으므로, 업데이트를 푸시 할 수 있습니다 우리는 이전에 만든 빌드를 가져옵니다 그들로부터 업데이트를 생성 한 다음 장치에 배달됩니다 업데이트는 기본적으로 새로운 기능, 버그 수정 또는 변경

이러한 기기로 푸시하는 것을 OTA라고합니다 또는 over the air 업데이트 장치는이 업데이트를 다운로드하여 B 파티션에로드합니다 재부팅되면 B 파티션으로 부팅됩니다 그러나 문제가있는 경우 다시 A 파티션으로 돌아갑니다

나는 이것을 좋아한다 그것이 즉시 업데이트 느낌을 의미하기 때문에, 하지만 그들은 또한 내결함성이 있습니다 Android Things의 모든 사용자가이를 활용합니다 OTA를위한 옵션 중 하나는 부분 업데이트 (fractional update)라고합니다 채널의 업데이트를 100 %로 푸는 대신, 점차적으로 롤아웃 할 수 있습니다

나쁜 일이 생기면 동시에 모든 사용자에게 영향을 미치지는 않습니다 부분 업데이트 사용을 적극 권장합니다 OTA 접근을 위험에 빠뜨릴 수 있습니다 앞서 말했듯이 거의 모든 기술 동일한 인프라를 사용하고 있습니다 현장에서 수백만 개의 장치를 업데이트하기 위해 매일 사용하십시오

AB 업데이트, 델타 업데이트, 부분 업데이트 같은 것들 이것들은 모두 어렵지만 결정적으로 중요합니다 기기의 안정적인 업데이트를 원한다면 중요합니다 세계적인 AMY JANG : 아담이 언급 한 것처럼, Android Things 기기는 동일한 OTA 아키텍처를 따릅니다

Google이 사용하는 기능이므로 작동 할 것이라고 확신 할 수 있습니다 하지만 궁금해 할 것 같은데, 오타 후드 아래서 일하니? 그것은 꽤 간단한 흐름입니다 Android Things를 통해 지정하면 콘솔에서 정보를 저장하도록 OTA 서버를 업데이트합니다 제품 및 업데이트 채널에 대해 장치가 OTA 서버에보고합니다 5 시간마다 빌드 정보를 제공합니다

그러면 OTA 서버는 장치가 그것을 데리러 업데이 트가 있습니다 기기가 새 업데이트를 다운로드하고 설치합니다 우리가 얘기했던 비활성 AB 파티션을 구축하십시오 사용자는 여전히 기기를 사용할 수 있습니다 이 과정에서

Update Manager API를 사용하면 모든 권한을 가질 수 있습니다 업데이트 정책 (예 : 업데이트주기) 장치가 업데이트 확인을 위해 핑 (ping)하도록 하시겠습니까? 또한 듣는 방법으로 장치 동작을 사용자 정의 할 수 있습니다 이벤트를 업데이트합니다 일반적인 업데이트의 예를 살펴 보겠습니다 시퀀스, 장치 내부에서 발생하는 [INAUDIBLE] 다음과 같은 업데이트 상태 이벤트가 발생합니다

해당 앱 리스너에 게시됩니다 업데이트 엔진이 OTA를 서버에 확인합니다 OTA는 업데이트 엔진 클라이언트가 거기에 있음을 알리게합니다 그것을 데리러 새로운 업데이 트입니다 그러면 업데이트 다운로드가 시작됩니다

이 흐름도에서 볼 수 있듯이, 해당 업데이트 이벤트가 앱 수신기에 게시됩니다 그리고 그것은 당신의 앱입니다 설정 한 정책에 따라 앱 다음과 같은 경우 장치 재부팅을 트리거 할 수 있습니다 당신은 그것이 적절하다고 생각합니다 장치가 부팅되면 업데이트가 기록 될 새 파티션으로 시작하십시오

다시 부팅하면 업데이트를 다시 확인합니다 이미 업데이트되었으므로 다음 업데이트 때까지 유휴 상태로 돌아갑니다 수표가 발행됩니다 따라서 API를 사용하여 정책을 설정하는 방법입니다 관리자 인스턴스를 업데이트 할 수 있습니다

원하는 정책을 설정하십시오 적용 정책 만 사용하여 업데이트 관리자 업데이트를 다운로드하고 설치합니다 새 업데이트가 제공 될 때마다 업데이트 간격을 변경할 수 있습니다 이 API를 사용하는 빈도 – 예를 들어 이틀이라고 해 그러나 전체 흐름을 제어하려고한다고 가정 해보십시오

그런 다음 검사 전용 정책을 사용할 수 있습니다 모든 업데이트 이벤트를 듣고 전체 업데이트를 제어합니다 방법 업데이트 사용 가능 상태를 수신하면, 다운로드를 시작하기 좋은지 여부를 결정할 수 있습니다 설치하십시오

그리고 좋은 시간이라고 생각할 때, 지금 업데이트를 실행할 수 있습니다 메서드를 호출합니다 그리고 완료되면 업데이트 된 요구 사항을 다시 부팅하게됩니다 지위 그리고 또한 좋은 시간이라고 생각할 때, 장치를 다시 시작하도록 트리거 할 수 있습니다

그리고 그것은 모두 당신의 통제하에 있습니다 기기가 제로 데이 업데이트가 필요합니다 어떤 선반 시간 후에 고객이 제품을 구입하면, 이미 새 소프트웨어를 업그레이드했을 수도 있습니다 다음 가장 시원한 것 그리고 당신은 그것들을 시작하기를 원합니다, 그렇죠? 사용자가 몇 기가 바이트를 다운로드하는 것을 원하지 않습니다

새로운 소프트웨어가 귀하의 제품을 사용하기 전에 델타 업데이트는이 페이로드 업데이트가 가능한 한 작다는 것을 의미합니다 기본적으로 공장 이미지 옵션에 따라, 이전 OTA가 푸시하면 Android Things 콘솔 돌보아주고 자동으로 생성합니다 빌드 사이의 델타 페이로드, 그래서 장치는 더 작은 페이로드 패킷을 수신 할 수 있습니다 그들의 현재 빌드와 새로운 가장 멋진 것 사이 당신의 친구가 크리스마스 선물을 풀 었다고 상상해보십시오 그리고 그들은 최신 버전을 다운로드하기 위해 20 분을 기다려야했습니다

정말 끔찍한 경험 이었죠? 델타 업데이트를 통해 훨씬 개선되었습니다 ADAM RODRIGUEZ :이 시점에서 우리는 아마 조금 지출해야한다 보안에 대해 이야기하는 시간 XKCD가 매우 우아하게 지적했듯이, 단순히 안전한 장치를 만드십시오 안전한 IoT를 유지한다는 것은 지속적으로 유지된다는 것을 의미합니다

업데이트 및 취약성 찾기, 제품 수명주기 동안 변화를 추진합니다 우리는 Android Things가 얼마나 훌륭한 지에 대해 많이 이야기했습니다 많은 것을 만들고 싶을 때 그러나 당신이 무언가를 많이 만들 때, 너는 정말로 밀고하는 책임이 있니? 해당 제품의 평생 동안 새로운 업데이트가 있습니까? 에이미와 나는 이제 멋진 세탁 로봇을 가지고있다 하지만 몇 년 후에 우리는 다른 일을 계속합니다

어쩌면 우리는 다른 일자리를 얻을 수 있습니다 그 다음엔? 새로운 취약점에 대해 알게되었을 때, 커널 및 라이브러리 픽스를 조사합니까? 어쩌면 우리는 모든 엔지니어들과 다시 만날 수 있습니다 새 빌드를 컴파일하여 사용자에게 제공 할 수 있습니까? 아니 그게 무슨 일이 아니야 실제로 이러한 고아 장비, 그들은 인터넷에 연결되어 있습니다

아마 사용되지 않았을 것입니다 하지만 정말 취약합니다 고맙게도 Android Things를 사용하여 우리는이 문제에 대한 해결책을 가지고 있습니다 자동 갱신 플래그 Google의 SoM 전략 덕분에 Google은 자신있게 SoM을 실행하는 모든 IoT 장치에 보안 수정 사항을 적용하고, 세탁 접이식 로봇 또는 웹 캠 일 수 있습니다

채널에서이 깃발을 뒤집기 만하면됩니다 모든 장치가 정기적 인 보안 업데이트를 받게됩니다 귀하의 개입없이 Google로부터 메모하는 것이 중요합니다 이 깃발을 뒤집기 위해 필요합니다 자동 업데이트를 활성화하지 않은 경우, Google은 여전히 ​​보안 문제를 해결할 것입니다 그러나 언제 어떻게 구현할 것인지 선택할 수 있습니다

그것은 당신에게 달려 있습니다 Google에서 귀하의 업데이트 또는 관리를 관리하게하십시오 그들이 너 자신을 굴릴 때 Android Things 업데이트 방법에 대해 조금 이야기 해 보겠습니다 및 버전 관리 작업

대략 Android 버전의 주요 버전 일반 Android의 디저트 출시에 해당합니다 이들은 장기간 지원되는 대형 릴리즈입니다 Android API 프레임 워크 변경 사항을 나타냅니다 해당 채널의 자동 업데이트 플래그 주요 버전에서 업데이트되지 않습니다 따라서 메이저 버전 1에서 시작한다면, 주요 버전 2가 출시 되더라도, 주요 버전을 기반으로 보안 업데이트를 계속받을 수 있습니다

1을 선택하면됩니다 두 번째 숫자는 부 버전입니다 이들은 상대적으로 위험도가 낮은 업데이트입니다 그들은 안드로이드 API 프레임 워크의 변경이 없으며, 하지만 Android Things API가 추가되었습니다 자동 업데이트 플래그를 반전하면 당신은 새로운 주요 버전에 걸쳐 업데이트를 얻을 것으로 기대할 수 있습니다

따라서 12에서 시작하면 다음 부 버전이 나올 때, 13으로 마이그레이션 할 것입니다 마지막 번호는 보안 업데이트입니다 대략 매달 착륙 할 것으로 예상됩니다

API를 변경할 필요가 없습니다 그리고 이러한 업데이트는 자동 업데이트로 확실히 증가합니다 에 플래그 주요 버전 업데이트는 선택 사항이지만 교환하는 동안 Google을 통해 무료 업데이트를 얻으려면, 우리는 당신이 당신의 버전을 업데이트 할 것을 기대한다 각 부 버전 및 보안 패치에 걸쳐

그러나 당신이하는 일은 당신에게 달려 있습니다 자동 업데이트 플래그를 뒤집거나, 또는 직접 업데이트를 푸시하십시오 Android Things를 가장 쉽고 재미있게 만드는 것이 우리의 목표입니다 밖에 IoT 플랫폼을 확보하십시오 – 빌드가 가장 쉽고, 평생 동안 가장 안전하고 최신입니다 귀하의 제품의

그렇다면 SoM 및 주요 버전에서 어떻게 작동합니까? 그리고 년? 각 SoM은 Google에서 최소 3 년 동안 지원합니다 처음 사용 가능하게 된 때부터 모든 주요 버전에서 그래서 당신이 IMX8 SoM을 구입한다면 주요 버전 1에서 건물 시작 향후 3 년 동안 업데이트를 기대할 수 있습니다 모두 주요 버전 1에 남아 있습니다 주 버전을 업데이트 할 필요가 없습니다

2 전체 지원 시간을 얻으십시오 물론, 우리는 많은 장치들이 3 년보다 훨씬 더 많은 지원이 필요할 것입니다 따라서 SoM에서 지원하는 경우 다음 주 버전으로 업데이트하고 더 긴 지원을 받으십시오 창문 당신은 물론 항상 자신의 업데이트를 푸시 할 수 있습니다

전체 평생 동안 기기에서 사용할 수 있습니다 마지막으로, 더 긴 지원을 원한다면 시간, 확장 된 지원을위한 몇 가지 옵션에 대해 이야기 해주십시오 AMY JANG : 좋습니다 그래서 우리는 업데이트를 추진했습니다 우리의 로봇은 이제 양말을 접을 수 있습니다

마지막으로해야 할 일은 뒤로 물러서는 것입니다 우리 로봇이 현장에서 어떻게하고 있는지 모니터링하십시오 얼마나 많은 사용자가 있는지 확인하고 싶을 것입니다 그들은 매일 내 장치를 사용하고 있습니까? 그들이 방금 들었던 업데이트를 받고 있습니까? 아니면 미국의 로봇이 한국의 로봇과 비교하면 어떨까요? Android Things 콘솔이 제공합니다 엔드 투 엔드 솔루션을 통해 장치 분석에 이르기까지 다양한 솔루션을 제공합니다

매일 활성화 및 활성 그래프, 제품 전반에서 장치가 작동하는 방식을 모니터링 할 수 있습니다 시간 범위와 필터를 사용하여보다 심층적 인 분석을 수행 할 수 있습니다 IP 국가별로 기기를 필터링 할 수 있으며, ID를 만들고 채널을 업데이트하는 등의 작업을 수행합니다 당신이 콘솔을 통해 OTA를 밀고 나서 한 시간 안에, 이 모니터 화면으로 올 수 있습니다 업데이트가 어떻게 진행되고 있는지, 오류가 있는지, 귀하의 기기는 어떤 단계에 있습니다

그리고 우리가 제공하는 세분성은 매 순간까지입니다 업데이트 확인과 같은 다양한 업데이트 이벤트를 모니터링 할 수 있습니다 다양한 다운로드 상태 이벤트, 마지막으로 재부팅 이벤트, 장치가 새 파티션으로 재부팅되었음을 알립니다 여기에 표시되는 상태 이벤트에 매핑 된 이러한 이벤트 이전에 Update Manager API에서 보았습니다 그리고 업데이트에 오류가있는 경우, 당신은 업데이트 오류 그래프를 모니터링 할 수 있습니다

업데이트 오류를 ​​드릴 다운합니다 코드를보고 무슨 일이 일어나는지 확인하십시오 이것은 내가 OTA를 강요 한 직후에 굉장합니다 이 그래프를보고 장치가 잘 작동하는지 확인할 수 있습니다 내가 푸시 한 릴리스가 부드럽게 끝나면 ADAM RODRIGUEZ : 좋습니다

따라서 제작을 업데이트하는 방법을 안내해 드렸습니다 필드에있는 장치 그러나 왜 당신이 신경 써야하는지에 대해 정말로 재촉 해 봅시다 Android 작업으로 IoT를 쉽고 안전하게 만드는 것이 우리의 목표입니다 우리는이 일에 많은 시간을 할애 할 필요가 없습니다

우리는 당신이 중요하게 생각하는 것들에 집중하기를 바랍니다 당신의 하드웨어와 소프트웨어, 그 것 귀하의 제품을 차별화합니다 그리고 펌웨어, 보안 패치에 대해 우리를 의지 할 수 있습니다 업데이트 인프라 Android Things를 사용하면 일반 Android를 사용할 수 있습니다

개발자는 물론 Kotlin 및 Android와 같은 친숙한 도구를 사용할 수 있습니다 사진관 동일한 기술을 활용하게됩니다 수백만 대의 장치를 업데이트하는 데 사용하는 매일 현장에서 델타 업데이트, 부분 업데이트, AB 파티션 및 향상된 모니터링

이 모든 것을 스스로 구축하는 것을 상상할 수 있습니까? 네가 할 수있을거야 하지만 무언가는 당신이 오히려 발전하고 있다고 말할 수 있습니다 업데이트 재 작성보다 새로운 기능 및 기능 하부 구조 중요한 보안 업데이트도 있습니다 Google의 제품 유지를위한 이상적인 방법입니다

당신의 개입없이 안전하게 지키십시오 몇 년 동안 길을 결국 우리는 정말로 업데이트가 가능한 안전한 IoT를 쉽게 구축 할 수 있습니다 신제품에 대한 많은 기회가 있다고 생각하십시오 이 공간에서의 아이디어

AMY JANG : 그리고 그걸로 우리는 당신에게 감사의 말을 전하고 싶습니다 프로덕션 업데이트 방법에 대한 우리의 강연에 참석 한 분 Android Things 콘솔이있는 현장의 기기 전에 말했듯이, 거기에는 많은 옵션이 있습니다 IoT의 경우 어떤 OS 및 하드웨어를 선택할 수 있습니다 하지만 안드로이드 코드 작성에 익숙하다면, Android 환경을 사용하면 쉽게 시작할 수 있습니다

많은 장치를 만들고 판매하려는 경우, 보안에 관심이 있다면, 필요한대로, 그리고 원하는 생산 장치를 쉽게 관리 할 수 ​​있으며, Android는 당신을위한 훌륭한 솔루션입니다 고맙습니다 [음악 재생]