2장. 내부 입문서
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
방금 살펴본 것처럼 Android의 소스는 원하는 디바이스에 맞게 다운로드, 수정 및 설치할 수 있도록 무료로 제공됩니다. 실제로 코드를 가져와서 빌드한 다음 Android 에뮬레이터에서 실행하는 것은 매우 간단합니다. 하지만 디바이스와 하드웨어에 맞게 AOSP를 커스터마이징하려면 먼저 안드로이드의 내부를 어느 정도 이해해야 합니다. 따라서 이 장에서는 안드로이드 내부를 개괄적으로 살펴보고, 이후 장에서 내부를 실제 AOSP 소스에 연결하는 등 내부의 일부를 더 자세히 살펴볼 수 있는 기회를 갖게 될 것입니다.
참고
서문에서 언급했듯이 이 책은 주로 2.3.x/진저브레드를 기반으로 합니다. 즉, 안드로이드의 내부는 해당 버전까지 상당히 안정적으로 유지되어 왔으며, 해당 버전에서 현재 4.2/젤리빈까지 거의 변경되지 않았습니다. 하지만 내부의 대부분은 비교적 큰 변화가 없지만, 안드로이드의 폐쇄적인 개발 프로세스 덕분에 중요한 변경 사항이 예고 없이 발생할 수 있습니다. 예를 들어, 2.2/Froyo 및 이전 버전에서는 상태 표시줄이 시스템 서버의 필수적인 부분이었습니다. 2.3/진저브레드에서는 상태 표시줄이 시스템 서버에서 분리되어 이제 독립적으로 실행됩니다.[11]
앱 개발자 보기
Android의 개발 API는 Linux 세계에서 볼 수 있는 것을 포함하여 기존의 다른 어떤 API와도 다르다는 점을 고려할 때, AOSP를 해킹하는 사람이 보는 안드로이드의 모습과는 매우 다르지만 앱 개발자의 관점에서 "안드로이드"가 어떤 모습인지 이해하는 데 시간을 할애하는 것이 중요합니다. 기기에 안드로이드를 임베드하는 임베디드 개발자는 안드로이드 앱 개발 API의 특수성을 직접적으로 다룰 필요가 없을 수도 있지만, 일부 동료는 그럴 수도 있습니다. 다른 것이 아니라면 앱 개발자와 공통된 용어를 공유하는 것이 좋습니다. 물론 이 섹션은 요약된 내용일 뿐이며, 더 자세한 내용은 Android 앱 개발에 대한 글을 읽어보시기 바랍니다.
안드로이드 개념
애플리케이션 개발자는 Android 앱을 개발할 때 몇 가지 주요 개념을 고려해야 합니다. 이러한 개념은 모든 안드로이드 앱의 아키텍처를 형성하고 개발자가 할 수 있는 일과 할 수 없는 일을 결정합니다. 전반적으로 사용자의 삶을 개선하지만 때로는 다루기 어려울 수 있습니다.
구성 요소
안드로이드 애플리케이션은 느슨하게 연결된 구성 요소로 이루어져 있습니다. 한 앱의 컴포넌트는 다른 앱의 컴포넌트를 호출하거나 사용할 수 있습니다. 가장 중요한 점은 Android 앱에는 main() 함수나 이와 유사한 단일 진입점이 없다는 것입니다. 대신 개발자가 컴포넌트를 묶을 수 있는 인텐트라는 사전 정의된 이벤트가 있으며, 해당 이벤트가 발생하면 컴포넌트가 활성화되도록 할 수 있습니다. 간단한 예로 사용자가 다이얼러 또는 다른 앱에서 연락처 버튼을 누를 때 호출되는 사용자의 연락처 데이터베이스를 ...