Android Things Release Note 요약


아직 개발자 프리뷰 단계이지만 Android Thing가 어떻게 변화해 왔는지를 안다면 Android Things의 지향점을 
파악하는 데 조금은 도움이 될 것이라는 판단 하에 개발자 프리뷰1에서부터 현재의 개발자 프리뷰 3.1까지 각 버전별
릴리즈 노트를 살펴보고자 한다. 물론 Android Things 홈페이지 내용을 번역한 것이다…^^;


다 번역을 하고 보니 아직은 특별히 주목할 만한 것은 없으며 지원 기기의 추가, 아직 지원하지 않는 API들에 대한 지원 확대, 그리고 마지막 3.1 릴리즈에서 보여지는 구글 클라우드 서비스와의 연동 등이 주 내용으로 판단된다. 아직은 성장 단계로 조금 더 지켜봐야 할 것이다. 앞으로도 지속적으로 릴리즈 노트를 번역해보겠다.


Developer Preview 1

릴리즈 날짜 : 2016년 12월
빌드 번호 : NIF73/NIF74
play service : 10.0.0


이 프리뷰 릴리즈는 지원되는 하드웨어에 대한 개발과 호환성 테스트를 하기 위해 Android Things를 이용하고자 
하는 개발자들과 얼리 어댑터들을 위한 것으로 이 프리뷰에 대한 아래의 일반 가이드라인에 주의하길 바란다.


  • 이 릴리즈는 지원되는 하드웨어에 대한 여러 지속적 이슈가 있으니 발견한 버그들은 리포트해주길 바란다.
  • 이 프리뷰에서는 API들의 모든 부분을 사용할 수는 없다. 사용 불가한 것으로 알려진 API들은 Known Issue 섹션에 문서화 되어있다.
  • 개발자 프리뷰 1은 Intel EdisonNXP Pico, 그리고 Raspberry Pi 3 개발 보드에서 사용 가능하다.


◼︎Known Issue

  • 시스템 전원 관리자는 현재 사용 불가능하다. 기기가 suspend 상태로 들어가지 않고 따라서 wake lock 기능이 필요치 않다(wake locks는 sleep 상태로 들어가거나 sleep 상태에서 깨우는 기능).
  • 블루투스 API들은 사용 불가능하다.
  • USB API들은 사용 불가능하다.
  • 위험한 권한 요청에 대해서는 기기를 재부팅해야 승인이 이루어진다. 이런 현상은 새로운 앱 설치 및 앱 내에 
    <uses-permission>요소가 있는 경우를 모두 포함한다.
  • 부팅 시 dex를 미리 최적화하기 위해 Google Plat Service는 2~3분 정도의 시간을 필요로 한다. 이 프로세스가 완료되기 전에는 App을 설치할 수 없다.
  • IOT_LAUNCHER 카테고리를 위한 intent 필터에 여러 개의 activity가 포함되어있는 경우 시스템은 디스플레이 지원 장치 없이는 기기에서 접근할 수 없는 ‘앱 선택기’를 표시한다(즉, 이런 경우 디스플레이 장치가 반드시 필요하다는 의미). Android Things는 단일 launcher 앱만을 지원하며 따라서 이런 동작은 이후 릴리즈에서는 사용할 수 없게 될 것이다.


Peripheral I/O

  • 주변장치들은 close() 호출 후에 클리어 되거나 리셋되지 않는다. 출력은 그 장치들의 상태를 그대로 간직하고 있을 것이고 시리얼 포트에서는 이전에 버퍼링된 데이터들을 계속해서 보내려 할 것이다.
  • GPIO 핀들은 마지막으로 재부팅 된 이후에 엣지 트리거와 함께 이미 입력으로 활성화 된 경우 출력으로 사용할 수 없을 것이다.


User Driver

  • 사용자 센서들은 현재는 수동으로 해제할 수 없다. 이 센서들은 app 프로세스가 종료되면 자동으로 
    해제된다.
  • 사용자 센서로는 Continuous 및 On-change 센서만 지원 가능하다. One-shot과 special 리포팅 모드는 기대한대로 동작하지 않을 것이다.

Reporting modes란

센서들은 다양한 방법으로 이벤트를 생성하는데 이를 Reporting mode라고 부른다. 각 센서들은 하나의 유형에 오직 하나의 reporting mode와 관계를 맺으며 모두 4개의 reporting mode가 있다.

  • Continuous : 배치 함수로 전달된 sampling_period_ns 파라미터에서 정의한 일정한 주기로 이벤트를 생성하며 가속도 센서나 자이로 센서가 여기에 포함된다.
  • On-change : 측정된 값에 변화가 있을 때만 이벤트가 발생한다. step counter, 근접 센서, 심박 센서 등이 여기에 포함된다.
  • One-shot : 이벤트가 감지되는 시점에서 HAL을 통해 단일 이벤트를 전송하고 센서 자신은 비활성화 된다. 중요 동작(Significant motion) 센서가 여기에 포함된다.
  • special : 센서별로 특정한 방식으로 이벤트를 발생시키며 자센한 것은 센서 타입 설명을 참조. 기울기 센서, Step detector 등이 여기에 포함된다.


인텔 Edison과 NXP Pico 관련 내용은 생략합니다.


Raspberry Pi

  • Network : 인터넷 접속이 없더라도 이미 이더넷으로 네트워크에 연결되어있는 경우 Wi-Fi로 인터넷에 연결할 수 없다.
  • Graphic : 하드웨어 그래픽 가속은 현재는 사용 불가능하다.
  • Camera : 하나 이상의 대상 출력 화면에 대해서는 새로운 CameraCaptureSession을 생성할 수 없다.
  • Camera : 어던 CameraCaptureSession에 대해서라도 최초의 요청에 대해서는 2개의 이미지가 queues에 쌓이게 된다. 이런 동작은 같은 session 내에서 연이어 발생하는 CaptureRequest가 이전 capture에서 버퍼링된 프레임을 리턴하는 문제를 야기한다.
  • I/O : BCM13/PWM1, BCM18/PWM0 공유 핀들은 이미 PWM 핀으로 활성화 된 경우 재부팅하기 전까지는 GPIO로 사용할 수 없다.
  • I/O : GPIO핀인 BCM23, BCM24 핀은 두 개 모두 BCM23을 컨트롤하도록 매핑되어있다(물리적 핀 J8-16).
  • I/O : GPIO 핀인 BCM4, BCM5, 그리고 BCM6는 입력으로 사용할 경우 내부적으로 3.3V로 pulled-up(스위치가 Off 상태이면 전류가 흐르고 On 상태면 흐르지 않는 상태)된다.

Developer Preview 2

릴리즈 날짜 : 2017년 2월
빌드 번호 : NIG40
play service : 10.0.0


Preview API 참조 링크 : Javadoc reference.


개요는 Developer Preview 1과 동일하며 다만 지원 기종에 Intel Joule이 추가되었다.


◼︎New in Preview 2


Intel Joule 지원

Intel® Joule compute module 기기에 대한 지원 시작. 자세한 내용은 developer kits 문서 참조.


Native peripheral API

Android NDK를 위한 Native PIO library를 이용하여 C/C++ 코드를 이용하여 주변장치의 I/O에 접근 가능헤게 되었다.


USB audio 지원

기기의 온보드 아날로그 오디오 장치의 기능을 사용하지 않고도 USB 마이크나 스피커를 이용하여 녹음이나 오디오 재생이 가능하게 되었다. 프리뷰 2에서 이 기능을 지원하는 플랫폼은 다음과 같다

  • Intel® Edison
  • Intel® Joule
  • Raspberry Pi


TensorFlow sample

Android Things 기기에서 Tensorflow를 사용하는 방법을 보여주는 샘플을 작성하였다. 이 샘플은 카메라를 이용하여 사물을 인식하고 이미지를 분류한 후 text-to-speech(TTS)기능을 이용하여 결과를 음성으로 출력해준다.
자세한 사항은 samples page에서 확인하라.


Peripheral manager reporting

개발자들은 이제 dumpsys 명령어를 이용하여 개발이나 디버깅 중에도 개발보드 상에 연결된 주변 장치 포트의 활성 여부를 확인 가능하게 되었다. 명령어 사용 예제는 아래와 같다.

$ adb shell dumpsys com.google.android.things.pio.IPeripheralManager


◼︎Known Issues


처음 5개의 항목은 Preview 1과 동일하므로 생략한다.

  • 하드웨어 그래픽 가속 기능(OpenGL)은 현재 사용 불가능하다. 따라서 이러한 기능에 의존하는 API들(WebView같은) 역시 사용할 수 없다.


Peripheral I/O

Preview 1과 동일


User Drivers

Preview 1과 동일


인텔 Edison과 Joule 그리고 NXP Pico 관련 내용은 생략합니다.


Raspberry Pi

  • Network : 인터넷 접속이 없더라도 이미 이더넷으로 네트워크에 연결되어있는 경우 Wi-Fi로 인터넷에 연결할 수 없다.
  • Camera : 하나 이상의 대상 출력 화면에 대해서는 새로운 CameraCaptureSession을 생성할 수 없다.
  • Camera : 어던 CameraCaptureSession에 대해서라도 최초의 요청에 대해서는 2개의 이미지가 queues에 쌓이게 된다. 이런 동작은 같은 session 내에서 연이어 발생하는 CaptureRequest가 이전 capture에서 버퍼링된 프레임을 리턴하는 문제를 야기한다.
  • I/O : BCM13/PWM1, BCM18/PWM0 공유 핀들은 이미 PWM 핀으로 활성화 된 경우 재부팅하기 전까지는 GPIO로 사용할 수 없다.
  • I/O : GPIO 핀인 BCM4, BCM5, 그리고 BCM6는 입력으로 사용할 경우 내부적으로 3.3V로 pulled-up(스위치가 Off 상태이면 전류가 흐르고 On 상태면 흐르지 않는 상태)된다.
  • Audio : 온보드 아날로그 audio는 PWM과 동시에 사용할 수 없다.

Developer Preview 3

릴리즈 날짜 : 2017년 4월
빌드 번호 : NIG86E
play service : 10.0.0


개요 부분은 Preview 2와 동일하며 다만 지원 기종에 NXP Argon이 추가 되었다.


◼︎New in Preview 3


NXP Argon i.MX6UL support

Android Things는 이제 NXP® Argon i.MX6UL 개발 플랫폼을 지원한다. 기기와 성능에 대한 자세한 내용은 developer kits에서 확인하라.


Android Bluetooth APIs 지원

개발자들은 이제 Android Things가 지원하는 모든 기기들간에 Android Bluetooth APIs를 이용할 수 있다. 이 APIs는 
이전 세대의 Bluetooth기기와 BLE(Bluetooth Low Energy) 기기 간의 통신에도 사용 가능하다. Bluetooth audio와 Bluetooth GATT 서버 코드 샘플을 Samples 페이지에서 확인하라. 


USB host 지원

Android Things 기기들은 이제 USB host 모드로 작동할 수 있다. USB Enumerator 샘플을 통해 USB host에 연결된 USB 장치를 순회하면서 그 장치의 인터페이스와 연결점을 출력하는 데모를 확인할 수 있다.


Access to USB-serial devices

USB-serial 변환 장치는 연결 후 UartDevice로 확인된다. 개발자들은 getUartDeviceList() 함수를 이용하여 이 장치들의 이름을 발견할 수 있다.


Reference documentation

이제 온라인 상에서 reference documentation를 볼 수 있다.


◼︎Known Issues

  • 시스템 전원 관리자는 현재 사용 불가능하다. 기기가 suspend 상태로 들어가지 않고 따라서 wake lock 기능이 필요치 않다(wake locks는 sleep 상태로 들어가거나 sleep 상태에서 깨우는 기능).
  • 위험한 권한 요청에 대해서는 기기를 재부팅해야 승인이 이루어진다. 이런 현상은 새로운 앱 설치 및 앱 내에 
    <uses-permission>요소가 있는 경우를 모두 포함한다.
  • 부팅 시 dex를 미리 최적화하기 위해 Google Plat Service는 2~3분 정도의 시간을 필요로 한다. 이 프로세스가 완료되기 전에는 App을 설치할 수 없다.
  • 하드웨어 그래픽 가속 기능(OpenGL)은 현재 사용 불가능하다. 따라서 이러한 기능에 의존하는 API들(WebView같은) 역시 사용할 수 없다.
  • A2DP Bluetooth profile(Advanced Audio Distribution Profile : 블루투스를 이용하여 음악을 내보내는 기술)는 sink 모드로 설정된다. 이후 릴리즈에서는 Bluetooth profiles를 설정 가능한 방법을 제공할 예정이다. 이러한 이유로 현재 BluetoothAdapter.getProfileProxy()에서 BluetoothProfile.A2DP 인자가 사용될 경우 에러가 발생하게 된다.

Peripheral I/O

-Preview 2와 동일


User Driver

-Preview 2와 동일


인텔 Edison과 Joule 그리고 NXP Pico, Argon 관련 내용은 생략합니다.


Raspberry Pi

  • Audio : Wi-Fi와 Bluetooth가 모두 활성화 된 경우 Audio 품질 이슈가 발생한다.

나머지 내용은 Preview 2의 6개 항목과 동일


Developer Preview 3.1

릴리즈 날짜 : 2017년 5월
빌드 번호 : NIG86K
play service : 10.0.0


이번 릴리즈는 라즈베리파이 3 개발을 위한 릴리즈이다.
주의 : AIY Projects Voice Kit 지원을 위한 경우가 아니라면 이 버전으로 업데이트할 필요가 없다.


◼︎New in Preview 3.1


Voice Kit support

Android Things는 AIY Projects 프로젝트로부터 라즈베리파이 기반의 Voice Kit을 지원하게 되었다. Voice User Interface(VUI, 음성 사용자 인터페이스)를 빌드하기 위해 이 kit을 사용할 때 cloud 서비스를 이용할 수 있다(Google Assistant SDK 또는 Cloud Speech API 등의 서비스)


◼︎Known Issues


Preview 3과 동일

블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

댓글을 달아 주세요