AOSP 관련 자주 묻는 질문(FAQ)

이 문서에는 Android 오픈소스 플랫폼(AOSP)에 관한 일반적인 질문에 대한 답변이 포함되어 있습니다.

오픈소스 관련 질문

Google이 Android 소스 코드를 공개한 이유는 무엇인가요?

Google에서는 자사의 모바일 앱 출시 경험을 바탕으로 AOSP를 시작했습니다. 이동통신사, OEM, 개발자가 혁신적인 아이디어를 실현할 수 있는 개방형 소프트웨어 플랫폼을 제공하고, 한 기업이 다른 기업의 혁신을 제한하거나 통제하는 중앙 장애 지점을 방지하고자 했습니다. AOSP의 가장 중요한 목표는 Android 오픈소스 소프트웨어가 모두에게 이익이 되도록 광범위하고 호환되는 방식으로 구현되는 것입니다.

Android는 어떤 종류의 오픈소스 프로젝트인가요?

Google은 핵심 AOSP의 개발을 감독하며 개발자 및 사용자 커뮤니티를 견고하게 구축하기 위해 노력하고 있습니다. 대부분의 경우 Android 소스 코드는 copyleft 라이선스가 아닌 퍼미시브 Apache 라이선스 2.0에 따라 라이선스가 부여됩니다. Google이 Apache 2.0 라이선스를 선택한 이유는 보다 광범위한 Android 소프트웨어 채택에 적합하다고 판단했기 때문입니다. 자세한 내용은 라이선스를 참고하세요.

Google이 Android를 담당하는 이유는 무엇인가요?

소프트웨어 플랫폼 출시는 복잡합니다. 개방성은 플랫폼의 장기적인 성공에 매우 중요한데, 이는 개발자의 투자를 끌어당기고 공정한 경쟁의 장을 마련하기 때문입니다. 또한 플랫폼은 사용자의 눈길을 사로잡는 제품이어야 합니다.

Google은 Android가 경쟁력 있는 소프트웨어 플랫폼으로 자리잡을 수 있도록 하기 위해 전문적인 엔지니어링 리소스를 투입해 왔습니다. 또한 Android 프로젝트를 본격적인 제품 개발 작업으로 간주하며, Android를 실행하는 우수한 기기가 시장에 진출하는 데 필요한 비즈니스 계약을 추진하고 있습니다.

Google은 사용자들이 Android를 성공적으로 활용할 수 있도록 함으로써 Android가 플랫폼이자 오픈소스 프로젝트로서의 강점을 갖도록 노력하고 있습니다. 소스 코드를 사용하여 성공적이지 못한 제품을 만들고 싶은 사람은 없을 것입니다.

Google의 목표는 Android를 기반으로 성공적인 생태계를 구축하는 것입니다. 이에 Android 소스 코드를 공개했으며, 누구나 자신의 필요에 맞게 소프트웨어를 수정하고 배포할 수 있습니다.

Android 제품 개발에 관한 Google의 전반적인 전략은 무엇인가요?

Google은 우수한 기기를 경쟁이 치열한 시장에 출시합니다. 그런 다음 핵심 플랫폼의 혁신과 개선사항을 다음 버전으로 통합합니다.

달리 말하자면 Android 엔지니어링팀은 소수의 '플래그십' 기기에 중점을 두고 이러한 제품 출시를 지원하는 Android 소프트웨어의 다음 버전을 개발합니다. 이러한 플래그십 기기는 제품 위험을 상당 부분 흡수하며 여러 OEM 제조업체가 새로운 기능을 활용하는 기기를 출시할 수 있도록 길을 마련해 줍니다. Google에서는 이러한 방식으로 Android 플랫폼이 실제 기기의 요구에 따라 진화하도록 합니다.

Android 소프트웨어는 어떻게 개발되나요?

Android의 각 플랫폼 버전(예: 1.5 또는 8.1)에는 오픈소스 트리에 해당하는 브랜치가 있습니다. 가장 최근 브랜치는 현재 안정화 브랜치 버전으로 간주됩니다. 이는 제조업체가 기기에 포팅하는 브랜치이며 항상 배포에 적합합니다.

동시에 현재 실험용 브랜치가 있는데, 여기에서는 대용량 차세대 기능과 같은 추론적 기여가 개발됩니다. 버그 수정 및 기타 참여는 실험 분기의 현재 안정화 분기에 적절하게 포함될 수 있습니다.

마지막으로 Google은 플래그십 기기 개발과 함께 Android 플랫폼의 다음 버전을 개발합니다. 이 브랜치는 상황에 따라 실험용 브랜치와 안정화 브랜치에서 변경사항을 가져옵니다.

코드 라인과 브랜치, 출시에 관한 자세한 내용은 Android 소프트웨어 관리를 참고하세요.

왜 Android의 일부는 비공개로 개발되나요?

일반적으로 기기를 시장에 출시하는 데 1년 이상 걸립니다. 그리고 기기 제조업체는 당연히 최신 소프트웨어를 출시하고 싶어 합니다. 반면 개발자 입장에서는 앱을 작성할 때 플랫폼의 새 버전을 계속해서 추적하기가 어렵습니다. 두 그룹 모두 출하되는 제품 간의 긴장감을 경험하며 뒤처지고 싶어 하지 않습니다.

이를 해결하기 위해 핵심 플랫폼 API를 포함한 Android의 다음 버전 일부는 비공개 분기에서 개발됩니다. 이러한 API는 Android의 다음 버전을 구성합니다. Android 플랫폼의 다음 버전을 만들면서 Android 소스 코드의 현재 안정화 버전에 집중하는 것이 목표입니다. 이를 통해 개발자와 OEM은 미완성된 미래의 작업을 추적하지 않고도 단일 버전을 사용할 수 있습니다. Android 시스템의 앱 호환성과 관련이 없는 다른 부분은 개방형 환경에서 개발됩니다. 시간이 지남에 따라 이러한 부분을 더 많이 오픈형 개발로 전환하고자 합니다.

소스 코드는 언제 출시되나요?

준비가 되면 출시됩니다. 소스 코드를 공개하는 과정은 매우 복잡합니다. Android의 일부는 오픈소스에서 개발되므로 해당 소스 코드는 항상 제공됩니다. 다른 부분은 비공개 트리에서 먼저 개발되고 다음 플랫폼 버전이 준비되면 소스 코드가 배포됩니다.

일부 버전에서는 핵심 플랫폼 API를 미리 준비하여 기기가 출시되기 전에 미리 소스 코드를 푸시하기도 합니다. 다른 버전에서는 불가능합니다. 모든 경우에 Google은 버전이 안정적이고 개발 프로세스가 허용하는 경우 플랫폼 소스를 공개합니다.

새로운 Android 버전의 소스 코드를 공개하는 데 필요한 사항은 무엇인가요?

Android 플랫폼의 새로운 버전을 위한 소스 코드를 공개하는 작업은 매우 중요합니다. 우선 소프트웨어는 기기의 시스템 이미지에 내장되며 휴대전화가 배포될 지역에 관한 정부 규제 인증 등 다양한 인증 형식을 거칩니다. 코드는 또한 연산자 테스트를 거칩니다. 이는 소프트웨어 버그를 감지하는 데 도움이 되므로 중요한 단계입니다.

규제 기관 및 운영자의 승인이 있을 때 제조업체에서 기기 대량 생산을 시작하고 소스 코드 공개를 시작합니다.

대량 생산과 동시에 Google팀은 오픈소스 출시를 준비하기 위한 몇 가지 노력을 시작합니다. 여기에는 최종 API 변경, 문서 업데이트(예를 들어 자격 테스트 중 변경된 사항을 반영하기 위해), 새 버전용 SDK 준비, 플랫폼 호환성 정보 출시 등이 포함됩니다.

Google의 법무팀은 코드를 오픈소스로 공개하기 위한 최종 승인을 내립니다. 오픈소스 저작자가 자신의 저작물에 관한 지식 재산 소유권을 증명하는 제공자 라이선스 계약에 서명해야 하므로 Google은 소스가 기여를 하도록 허가되었는지 확인해야 합니다.

대량 생산이 시작될 때부터 소프트웨어 출시 절차는 일반적으로 약 한 달이 걸리기 때문에 기기 출시와 거의 동시에 소스 코드가 출시됩니다.

AOSP는 Android 호환성 프로그램과 어떤 관련이 있나요?

AOSP는 Android 소프트웨어를 관리하고 새 버전을 개발합니다. 오픈소스이기 때문에 이 소프트웨어는 동일한 소스를 기반으로 다른 기기와 호환되지 않는 기기 개발을 비롯하여 어떤 용도로든 사용할 수 있습니다.

Android 호환성 프로그램의 목적은 개발자가 만든 서드 파티 앱과 호환되는 Android의 기본 구현을 정의하는 것입니다. Android 호환 기기는 Google Play를 포함한 Android 생태계에 참여할 수 있습니다. 호환성 요구사항을 충족하지 않는 기기는 생태계 외부에 존재합니다.

즉, Android 호환성 프로그램은 Android 호환 기기를 소스 코드의 파생 코드만 실행하는 기기와 구분하는 방법입니다. Android 소스 코드는 모든 용도로 사용할 수 있지만 Android 생태계에 참여하려면 기기가 Android 호환 앱인지 확인해야 합니다.

Android에 어떻게 기여할 수 있나요?

버그를 신고하거나 Android용 앱을 작성하거나 AOSP에 소스 코드를 기여할 수 있습니다.

Google에서 허용하는 코드 기여의 유형에는 제한이 있습니다. 예를 들어 전체 C++ 기반 환경과 같은 대체 앱 API를 기여하고자 할 수 있습니다. Android는 ART 런타임에서 앱을 실행하도록 권장하므로 Google은 이러한 기여도 거부합니다. 라이선스 목표와 호환되지 않는 GPL 또는 LGPL 라이브러리와 같은 기여는 허용되지 않습니다.

소스 코드 기여에 관심이 있는 개발자는 작업을 시작하기 전에 Android 커뮤니티에 나열된 채널을 통해 문의해 주시기 바랍니다. 자세한 내용은 기여를 참고하세요.

Android의 커밋한 사용자가 되려면 어떻게 해야 하나요?

AOSP에는 커밋한 사용자라는 개념이 없습니다. Google 직원의 저작물을 포함한 모든 기여는 Android 엔지니어링 프로세스의 일부인 Gerrit로 알려진 웹 기반 시스템을 거칩니다. 이 시스템은 Git 소스 코드 관리 시스템과 함께 소스 코드 작성을 깔끔하게 관리합니다.

지정된 승인 담당자는 제출된 모든 변경사항을 허용해야 합니다. 승인 담당자는 일반적으로 Google 직원이지만 소속처와 관계없이 동일한 승인 담당자가 모든 제출을 담당합니다.

자세한 내용은 패치 제출을 참고하세요.