2012년 5월 16일 수요일

AOSP의 라이브 월페이퍼 관련 히스토리

최신(2012년 5월 15일) 넥서스S나 갤럭시넥서스 용으로 AOSP 빌드를 하면 홀로스파이럴, 버블, 페이즈빔과 같은 ICS 이후 추가된 이쁜 라이브월페이퍼들이 나타나지 않는다는 이야기를 들었다.
흥미가 동해 찾아보니, 라이브월페이퍼들은 GMS라거나 저작권 관련 문제가 있어서 그런 건 아니었고, AOSP에 소스채로 존재하고, 잘 동작한다.
다만, 빌드 환경 구성에서 빠져 있다.

왜 안넣었는지 물어보니, 그저 구성에 추가하는 걸 깜빡한 것 같다고.


간단한 이야기였지만, 히스토리를 찾아보니 독점 소프트웨어와 얽혀 흥미롭다.
안드로이드는 오픈소스이지만, 실제 기기를 동작시키기 위해서는 여러 하드웨어(터치스크린, 스피커, 등등) 벤더가 제작한, 해당 하드웨어 드라이버 등의 안드로이드 외부에서 제작한 소프트웨어가 필요하다. 이들은 대부분 독점소프트웨어이기 때문에, 구글에서 맘대로 안드로이드 소스트리에 포함할 수 없다.

진져브레드 시절에는 리눅스 기본 그래픽 드라이버를 사용해 AOSP를 빌드, 동작 가능했는데, 당시에는 넥서스원이나 넥서스S 전용 그래픽 드라이버의 라이센스가 구글에 없었기 때문에 유용했다.
하지만, 전용 그래픽 드라이버를 사용하지 않으면 라이브월페이퍼가 크래시(에러 메세지를 내뱉고 비정상 종료된다) 나기 때문에, 라이브 월페이퍼는 AOSP 기본 빌드 구성에서 빠졌다.
지금도, 기본 에뮬레이터 용으로 빌드하고 라이브 월페이퍼를 집어넣으면 라이브 월페이퍼를 로딩하는 과정에서 크래싱이 발생한다.

하지만, 빌드&테스트는 해야겠기에, 그리고 독점 소프트웨어 라이센스를 교묘히 피하기 위해서인지 연결된 기기로부터 소스트리로 독점 소프트웨어들을 복사하고, 빌드 구성을 독점 소프트웨어 가능한 경우의 구성으로 변경하는 tricky한 스크립트(extract-files.sh)가 존재했다.
물론 저작권상 문제가 있을 수 있으므로, 관련 토론에서는 빌더의 간편성을 위한 스크립트일 뿐, 함부로 사용하지 말라는 주의도 주고 있다.
(https://groups.google.com/forum/?fromgroups#!searchin/android-building/extract-files.sh/android-building/T4XZJCZnqF8/9SQp8AnTHsAJ)


이후, 구글은 구글 레퍼런스 기기들에 대해서는 드라이버 제조사와 계약을 맺거나 했는지 라이센스를 획득했고, 각 구글 레퍼런스 기기들의 드라이버를 버전별로 배포하고 있다. 배포되는 드라이버를 간단히 소스트리에 추가, 완전한 소스트리를 구성할 수 있고, 이 때 라이센스에 사용자 동의 과정도 추가되어 있다.
따라서, 더이상 예전과 같이 tricky한 스크립트를 이용해 드라이버 있을 때, 없을 때 나눠서 환경 구성할 필요가 없으므로, 깔끔하게 기기 설정 메이크파일 환경에서 설정되도록 변경되었다.(074d297d744c)

독점 소프트웨어와 오픈소스의 까탈스럽고도 재밌는 동거 생활이다.




References:
https://groups.google.com/forum/?fromgroups#!topic/android-building/1u2xO1NJG8k

댓글 없음:

댓글 쓰기