이 문서에는 Android 오픈소스 플랫폼(AOSP)에 관한 일반적인 질문에 대한 답변이 포함되어 있습니다.
android-latest-release 정보
aosp-main에 제출할 수 없는 이유는 무엇인가요?
이제 aosp-main
브랜치가 읽기 전용으로 설정되어 있으므로 이 브랜치에 제출할 수 없습니다.
AOSP 변경사항은 어디에서 제안해야 하나요?
android-latest-release
(Repo 사용 시) 또는 android-latest-release
매니페스트에 지정된 최신 출시 브랜치(Git 직접 사용 시)에 새로운 변경사항을 제안해야 합니다. 다른 브랜치 (예: aosp-main
)의 기존 제안된 변경사항은 이동할 필요가 없습니다.
어느 브랜치에 동기화해야 하나요?
저장소를 사용하는 경우 다음 명령어를 사용하여
android-latest-release
에 동기화합니다.repo init --partial-clone --no-use-superproject -b android-latest-release -u https://android.googlesource.com/platform/manifest
Git을 직접 사용하는 경우
android-latest-release
매니페스트에 지정된 기본 버전 브랜치로 동기화합니다.
브랜치 동기화에 관한 자세한 내용은 Repo 클라이언트 초기화를 참고하세요.
android-latest-release의 코드가 aosp-main에 병합되나요?
아니요. 2025년 3월 27일부터 읽기 전용 브랜치인 aosp-main
에 코드가 병합되지 않습니다.
다음 출시의 코드는 어디에 푸시되나요?
Google은 다음 출시의 코드를 최신 공개 출시 브랜치에 푸시하고 해당 브랜치를 가리키도록 android-latest-release
매니페스트를 업데이트합니다.
변경 요청이 android-latest-release 브랜치에서 내부 Gerrit으로 선별되나요?
제안된 변경사항을 업로드하면 Google에서 검토한 후 승인되면 내부 Gerrit에 체리피킹합니다.
변경 요청이 승인되었는지 어떻게 알 수 있나요?
수락되고 체리피킹된 변경사항은 향후 Android 호스트의 출시 브랜치에 푸시될 때 표시되며 android-latest-release
를 사용하여 저장소와 동기화할 수 있습니다.
제안된 변경사항이 수락되거나 거부될 때의 알림 메커니즘은 없습니다.
외부 참여자가 변경사항을 제안한 시점부터 최신 출시 브랜치에 병합될 때까지의 일반적인 워크플로는 무엇인가요?
외부 참여자가
android-latest-release
(저장소를 사용하는 경우) 또는android-latest-release
매니페스트에 지정된 최신 출시 브랜치 (Git을 직접 사용하는 경우)의 변경사항을 제안합니다.Google에서 변경사항을 검토합니다. 변경사항이 다음과 같은 경우
승인됨: Google에서 해당 변경사항을 체리피킹하여 내부 개발 브랜치에 병합합니다.
승인되지 않음: Google에서 변경사항을 체리피킹하지 않습니다.
외부 참여자가
android-latest-release
에서 변경사항을 확인합니다.
제안된 변경사항이 더 이상 필요하지 않은 경우 어떻게 해야 하나요?
제안된 변경사항이 더 이상 필요하지 않거나 변경사항을 병합하고 싶지 않거나 Google에서 이미 변경사항을 검토했음을 알고 있는 경우 변경사항을 폐기하여 Android 호스트의 제안된 변경사항 기록에 유지합니다.
오픈소스 관련 질문
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)에는 오픈소스 트리에 해당하는 브랜치가 있습니다. 가장 최근 브랜치는 android-latest-release
매니페스트가 가리키는 현재 안정화 브랜치 버전으로 간주됩니다.
이는 제조업체가 기기에 포팅하는 분기이며 항상 배포에 적합합니다.
마지막으로 Google은 플래그십 기기 개발과 함께 Android 플랫폼의 다음 버전을 개발합니다.
왜 Android의 일부는 비공개로 개발되나요?
일반적으로 기기를 시장에 출시하는 데 1년 이상 걸립니다. 그리고 기기 제조업체는 당연히 최신 소프트웨어를 출시하고 싶어 합니다. 반면 개발자 입장에서는 앱을 작성할 때 플랫폼의 새 버전을 계속해서 추적하기가 어렵습니다. 두 그룹 모두 출하되는 제품 간의 긴장감을 경험하며 뒤처지고 싶어 하지 않습니다.
이를 해결하기 위해 핵심 플랫폼 API를 포함한 Android의 다음 버전 일부는 비공개 분기에서 개발됩니다. 이러한 API는 Android의 다음 버전을 구성합니다. Android 플랫폼의 다음 버전을 만들면서 Android 소스 코드의 현재 안정화 버전에 집중하는 것이 목표입니다. 이를 통해 개발자와 OEM은 미완성된 미래의 작업을 추적하지 않고도 단일 버전을 사용할 수 있습니다.
소스 코드는 언제 출시되나요?
준비가 되면 출시됩니다. 소스 코드를 공개하는 과정은 매우 복잡합니다. 커널과 같은 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 직원이지만 소속처와 관계없이 동일한 승인 담당자가 모든 제출을 담당합니다.
자세한 내용은 패치 제출을 참고하세요.