Android 소프트웨어 관리

Android 오픈소스 프로젝트(AOSP)에서는 OEM 및 기타 기기 구현자에 의해 포팅되어 자체 하드웨어에서 실행되는 전체 소프트웨어 스택을 관리합니다. Google에서는 Android의 품질을 유지하기 위해 정규직 엔지니어, 제품 관리자, 사용자 인터페이스 디자이너, 품질 보증 테스터, 기타 최신 기기를 시장에 출시하는 데 필요한 모든 역할을 지원했습니다.

이에 따라 Android의 현재 공개 버전과 비공개 실험용 작업을 명확히 구분할 수 있는 여러 코드 라인을 유지합니다. Google에서는 전체적인 제품 개발 주기를 위해 Android 코드 라인의 오픈소스를 관리하고 유지합니다.

AOSP 코드 관리

아래 차트는 AOSP 코드 관리 및 출시의 개념을 보여줍니다.

코드 라인 다이어그램
그림 1. AOSP 코드 및 버전
  1. 어떤 시점에서든 Android 플랫폼의 현재 최신 버전이 존재하며 이는 일반적으로 나뭇가지(브랜치) 형태를 띱니다.
  2. 기기 제조업체 및 참여자는 현재 최신 버전을 통해 버그를 수정하고 새 기기를 출시하며 새 기능을 실험하는 등의 작업을 처리합니다.
  3. 동시에 Google에서는 제품의 요구사항 및 목표에 따라 내부적으로 Android 플랫폼 및 프레임워크의 다음 버전의 개발을 진행합니다. 또한 Android를 Google에서 지향하는 방향으로 이끌 수 있는 사양을 갖춘 기기 파트너와 플래그십 기기를 위해 협업하여 Android의 다음 버전을 개발합니다.
  4. n+1번째 버전이 준비되면 공개 소스 트리에 게시되어 새로운 최신 버전이 됩니다.

용어 및 주의사항

  • 버전은 1.5 또는 8.1과 같은 Android 플랫폼의 정식 버전에 상응합니다. 플랫폼 출시는 AndroidManifest.xml 파일의 SdkVersion 필드에 있는 버전에 해당하며 소스 트리의 frameworks/base/api 내에서 정의됩니다.
  • 업스트림 프로젝트는 Android 스택이 코드를 가져오는 오픈소스 프로젝트입니다. Google에서는 Linux 커널 및 WebKit와 같은 프로젝트 외에도 ART, Android SDK 도구, Bionic과 같은 일부 반자동 Android 프로젝트를 업스트림 프로젝트로 계속해서 이전하고 있습니다. 일반적으로 이러한 프로젝트는 완전한 공개 트리에서 개발됩니다. 일부 업스트림 프로젝트의 경우 개발자가 업스트림 프로젝트에 직접 참여합니다. 자세한 내용은 업스트림 프로젝트를 참조하세요. 두 경우 모두 스냅샷이 정기적으로 출시에 제공됩니다.
  • 출시 코드 라인은 git에서 둘 이상의 브랜치로 구성될 수 있으며, 항상 특정 Android 플랫폼 버전의 단독 표준 소스 코드로 간주됩니다. 기기를 만드는 OEM 및 기타 그룹은 출시 브랜치에서만 가져올 수 있습니다.
  • 실험용 코드 라인은 안정성을 목표로 커뮤니티의 변화를 반영하여 반복될 수 있도록 설정되었습니다.
  • 최종적으로 안정성이 입증된 변경사항을 출시 브랜치로 가져옵니다. 이는 버그 수정, 애플리케이션 개선, 플랫폼의 API에 영향을 미치지 않는 기타 변경사항에만 적용됩니다.
  • 필요에 따라 변경사항을 Android 업스트림 프로젝트를 비롯한 업스트림 프로젝트에서 출시 브랜치로 가져옵니다.
  • Google에서 프레임워크 및 플랫폼 API의 다음 주요 버전인 n+1번째 버전을 내부적으로 개발합니다. 자세한 내용은 비공개 코드 라인을 참조하세요.
  • 필요에 따라 변경사항을 업스트림, 출시, 실험용 브랜치에서 Google의 비공개 브랜치로 가져옵니다.
  • 다음 버전의 플랫폼 API가 안정화되고 테스트가 완료되면 Google에서는 다음 플랫폼 버전의 출시를 삭제합니다(특히 새로운 SdkVersion). 공개 출시 브랜치 및 현재 최신 플랫폼 코드 라인을 만들고 있는 내부 코드 라인이 이에 해당합니다.
  • 새 플랫폼 버전이 삭제되면 해당하는 실험용 코드 라인이 동시에 생성됩니다.

비공개 코드 라인

위의 소스 관리 전략에는 Android의 최신 공개 버전에 집중할 수 있도록 Google에서 비공개로 유지하는 코드 라인이 포함됩니다.

OEM 및 기타 기기 제조업체는 당연히 Android 최신 버전을 탑재한 기기를 출시하고 싶어 합니다. 마찬가지로 애플리케이션 개발자는 필요한 것보다 더 많은 플랫폼 버전을 처리하고 싶어 하지 않습니다. 한편 Google에서는 플랫폼과 제품으로서의 Android에 관한 전략적 방향을 책임집니다. Google은 Android 관련 지적 재산권의 보호를 보장하면서 기능을 발전시키는 소수의 플래그십 기기에 중점을 둡니다.

그 결과 Google에서는 제3자의 기밀 정보를 보유하고 있는 경우가 많으며 적절한 보호 조치를 취할 때까지 민감한 기능을 공개하지 않습니다. 또한 한 번에 너무 많은 플랫폼 버전이 존재하는 경우 플랫폼에 심각한 위험을 초래할 수 있습니다. 이러한 이유로 Google에서는 현재 공개된 안정적인 Android 버전에 중점을 둔 오픈소스 프로젝트(제3자의 참여 포함)를 구축했습니다. 플랫폼의 다음 버전에 관한 심층적인 개발은 공식 출시가 될 준비를 마칠 때까지 비공개로 진행됩니다.

Google에서는 많은 참여자가 이 접근 방식에 동의하지 않는다는 사실을 인지하고 있으며, 이러한 의견을 존중합니다. 하지만 Google에서 선택한 이 접근 방식이 Android를 구현하는 데 가장 적합하다고 생각합니다.