Android Building Block Internals – Introduction2

오늘은 Android Platform Code에서 잘 알려지지 않은(?) 파일들을 훑어보도록 하겠습니다. 주로 이러한 잘 알려지지 않은 파일 코드들을 위주로 진행하도록 노력할 것 입니다.

혹여 안드로이드 플랫폼 코드(AOSP, 혹은 Android PDK라고 불리는)를 본적이 없으시다면, https://source.android.com/ 이쪽 링크를 통하여 확인해보시면 됩니다. 보통은 안드로이드 개발자의 경우 앱/서비스 개발자들을 지칭하여 https://developer.android.com 사이트를 많이들 들어가보실 텐데요. 위 PDK에도 정보가 꽤 많고, 사실 플랫폼과 상위 API의 관계가 상당히 유기적이기 때문에(다른 말로, Dependency가 많고, Dirty한 것으로 볼수도 있겠습니다만) 전체를 살펴보는것이 일반 앱/서비스 개발자에게도 도움이 됩니다.

사실 안드로이드가 임베디드 타겟으로 다소 적은 리소스를 가지고 있는 하드웨어에서 개발되었기에, 이러한 Dependency는 효율을 위한 선택이었을 것으로 생각합니다만, 최근의 복잡성 증가와 여러 파편화 이슈로 안드로이드도 기존의 Major OS처럼 Upgradablity, Maintainability등을 따져가면서 발전하고 있습니다. 따라서 아마도 지금이 전체적인 시스템을 보게될 마지막 시기가 될 수도 있을 것이구요.  차후로는 너무 잘 파티셔닝, 모듈화되어서 그냥 모듈교체(하드웨어,소프트웨어 모두 포함한)로 다 끝나버릴 수도 있고, 상업화된 코드들은 더이상 볼 기회가 없어질지도 모르겠습니다.

아래 안드로이드 플랫폼의 트리 구조입니다. 사실 이 파일들 아래에 거대한 리눅스 커널 소스가 자리하고 있지만, 일단은 제쳐두도록 합니다. 필요시 하나씩 꺼내 보도록 하겠습니다.

그나저나 여전히 그림 첨부가 안되고 있어서.. 일단 글로 씁니다 –;;;

bionic

art/dalvik

libcore

framework/base/

주로 다루고자 하는것은 위의 네가지 입니다. 물론 아래의 전체적인 시스템 빌딩 관련된 것도 다룰 수 있습니다.

build/

prebuilt/

또한 안드로이드와 유기적으로 혹은 전략적으로 사용하고 있는 오픈소스들도 다룰 날이 올지도 모르겠습니다.

external