자주 묻는 질문(FAQ)

이 페이지에서는 자주 묻는 질문(FAQ) 일부의 답변이 제공됩니다.

오픈소스

Android 오픈소스 프로젝트란 무엇인가요?

Android 오픈소스 프로젝트(AOSP)란 Android를 구성하는 사람, 프로세스, 소스 코드를 말합니다.

사람들은 프로젝트를 감독하고 소스 코드를 개발합니다. 프로세스는 소프트웨어 개발을 관리하는 데 사용하는 도구 및 절차입니다. 이를 통해 탄생하는 최종 결과가 바로 휴대전화 및 기타 기기에서 사용할 수 있는 소스 코드입니다.

Android 소스 코드를 왜 공개했나요?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

코드라인, 분기 및 출시에 관한 자세한 내용은 AOSP 코드 관리를 참고하세요.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

버그를 신고하거나 Android용 앱을 작성하거나 Android 오픈소스 프로젝트에 소스 코드를 제공할 수 있습니다.

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

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

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

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

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

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

맨 위로

호환성

Android '호환성'이란 무엇인가요?

Android SDK 및 NDK를 사용하여 타사 개발자가 작성한 애플리케이션을 실행할 수 있는 Android 호환 기기를 정의합니다. 이 필터를 사용하여 Android 앱 생태계에 참여할 수 있는 기기와 사용할 수 없는 기기를 분리합니다. 호환 기기의 경우 기기 제조업체에서 Android 상표 사용 승인을 요청할 수 있습니다. 호환되지 않는 기기는 Android 소스 코드에서 파생되며 Android 상표를 사용할 수 없습니다.

즉, 호환성은 Android 앱 생태계에 참여하기 위한 필수 조건입니다. 누구나 Android 소스 코드를 사용할 수 있습니다. 기기가 호환되지 않는 경우 Android 생태계의 일부로 간주되지 않습니다.

호환성에서 Google Play의 역할은 무엇인가요?

Android 호환 기기를 생산하는 기기 제조업체는 Google Play 클라이언트 소프트웨어의 라이선스를 요청할 수 있습니다. 라이선스가 부여된 기기는 Android 앱 생태계의 일부가 되므로, 사용자는 모든 호환 기기에서 공유한 카탈로그에서 개발자의 앱을 다운로드할 수 있습니다. 호환되지 않는 기기에서는 라이선스를 사용할 수 없습니다.

Android는 어떤 종류의 기기와 호환되나요?

Android 소프트웨어는 타사 앱이 제대로 실행되지 않는 기기를 비롯한 다양한 기기로 포팅할 수 있습니다. Android 호환성 정의 문서(CDD)는 호환 가능한 것으로 간주하는 구체적인 기기 설정을 설명합니다.

예를 들어 카메라가 없는 휴대전화에서 실행되도록 Android 소스 코드를 포팅할 수 있지만 CDD에서는 모든 휴대전화에서 카메라를 요구합니다. 이를 통해 개발자는 앱을 작성할 때 일관적인 기능을 사용할 수 있습니다.

CDD는 실제 시장 상황을 반영하여 진화하고 있습니다. 예를 들어, CDD 버전 1.6은 휴대전화만 지원합니다. 하지만 버전 2.1을 사용하면 태블릿 스타일의 뮤직 플레이어와 같은 휴대전화 이외의 기기에서 호환되도록 전화 하드웨어를 생략할 수 있습니다. 이와 같이 변경하면 개발자가 앱을 사용할 수 있는 상황을 계속 관리할 수 있도록 Google Play를 보강할 것입니다. 전화 통화를 계속 예로 든다면 SMS 문자 메시지를 관리하는 앱이 미디어 플레이어에서 유용하지 않으므로 Google Play에서는 개발자가 앱을 휴대전화 기기로만 제한할 수 있습니다.

기기가 호환되는 경우 Google Play 및 브랜딩에 자동으로 액세스할 수 있나요?

아니요, 자동으로 액세스할 수 없습니다. Google Play는 Google에서 운영하는 서비스입니다. Google Play 소프트웨어 및 브랜딩에 액세스하려면 호환성을 갖춰야 합니다. 기기가 Android 호환 기기로 인증되면 Google 모바일 서비스 라이선스에 포함된 문의 양식을 작성하여 Google Play에 액세스해야 합니다. 도움을 드릴 수 있는 경우에는 꼭 연락을 드리겠습니다.

제조업체가 아닌 경우 Google Play를 어떻게 이용할 수 있나요?

Google Play는 휴대 기기 제조업체의 기기 배송만 허용합니다. 구체적인 사례에 관련 문의 사항은 android-partnerships@google.com으로 보내주세요.

지도 등 Android용 Google 앱에 액세스하려면 어떻게 해야 하나요?

YouTube, Google 지도, Gmail 등 Android용 Google 앱은 Android에 속하지 않으며 별도로 라이선스를 받는 Google 서비스입니다. 앱 관련 문의 사항은 android-partnerships@google.com에 보내주세요.

호환성이 필수인가요?

Android 호환성 프로그램은 선택사항입니다. Android 소스 코드는 공개되어 누구나 기기를 만들 수 있습니다. 하지만 제조업체에서 제품에 Android 이름을 사용하거나 Google Play에 액세스하려는 경우 먼저 기기가 호환되는지 입증해야 합니다.

호환성 인증 비용은 얼마인가요?

기기의 Android 호환성을 획득하는 데 드는 비용은 없습니다. 호환성 테스트 모음은 오픈소스이며 누구나 기기 테스트에 사용할 수 있습니다.

호환성을 획득하는 데 얼마나 걸리나요?

모든 과정이 자동으로 이루어집니다. 호환성 테스트 모음은 호환성을 확인하기 위해 Google에 제공할 수 있는 보고서를 생성합니다. 결국 Google은 이러한 보고서를 공개 데이터베이스에 업로드할 수 있는 셀프 서비스 도구를 제공할 예정입니다.

호환성 정의는 누가 결정하나요?

Google은 플랫폼 및 제품으로서 Android의 전체 방향을 담당하므로 각 버전마다 호환성 정의 문서(CDD)를 유지합니다. Google은 입력을 제공하는 다양한 OEM과 협의하여 새로운 Android 버전의 CDD 초안을 작성합니다.

새 기기에서 각 Android 버전이 얼마나 오래 지원되나요?

Android 코드는 오픈소스이므로 누군가 이전 버전을 사용하여 기기를 실행하는 것을 방지할 수는 없습니다. Google은 더 이상 사용되지 않는 버전에 Google Play 클라이언트 소프트웨어를 사용하지 않도록 라이선스를 부여하지 않도록 합니다. 이를 통해 누구나 이전 버전의 Android를 계속 배송할 수 있지만, 기기는 호환되지 않는 것처럼 Android 이름을 사용하지 않고 Android 앱 생태계 외부에 존재합니다.

기기에서 다른 사용자 인터페이스를 사용해도 호환성이 유지되나요?

Android 호환성 프로그램은 기기에서 타사 애플리케이션을 실행할 수 있는지 여부를 결정합니다. 기기와 함께 제공된 사용자 인터페이스 구성요소(예: 홈 화면, 다이얼러, 색 구성표)는 일반적으로 타사 앱에 큰 영향을 미치지 않습니다. 따라서 기기 빌더는 사용자 인터페이스를 자유롭게 맞춤설정할 수 있습니다. 호환성 정의 문서는 OEM이 타사 앱에 영향을 미치는 영역의 시스템 사용자 인터페이스를 변경할 수 있는 정도를 제한합니다.

새로운 Android 버전의 호환성 정의는 언제 공개되나요?

Google의 목표는 해당하는 Android 플랫폼 버전이 이를 충분히 수렴할 때 Android 호환성 정의 문서(CDD)의 새 버전을 출시하는 것입니다. 소프트웨어와 함께 배송되는 첫 번째 플래그십 기기 이전에는 Android 소프트웨어 버전의 최종 초안을 출시할 수 없지만 최종 CDD는 항상 첫 번째 기기 이후에 출시됩니다. 하지만 CDD의 초안 버전을 필요에 따라 출시할 수 있습니다.

기기 제조업체의 호환성 주장은 어떻게 확인하나요?

Android 기기 호환성에는 확인 절차가 없습니다. 그러나 기기에 Google Play가 포함된 경우 Google은 일반적으로 Google Play 클라이언트 소프트웨어 라이선스에 동의하기 전에 기기의 호환성을 확인합니다.

호환성을 주장하는 기기가 나중에 호환성 문제가 있는 것으로 판명되면 어떻게 되나요?

일반적으로 Google은 Google Play 라이선스 수혜자와 관계를 맺고 기기 제조업체에게 문제를 해결하는 업데이트된 시스템 이미지를 공개하도록 요청할 수 있습니다.

맨 위로

호환성 테스트 모음

CTS의 목적은 무엇인가요?

호환성 테스트 모음은 기기 제조업체의 호환성을 보장하고 검증을 위해 테스트 결과를 보고하는 데 사용하는 도구입니다. CTS는 엔지니어링 프로세스 전반에 걸쳐 OEM에서 자주 실행하여 호환성 문제를 조기에 해결하기 위해 마련되었습니다.

CTS는 어떤 종류의 테스트를 하나요?

CTS는 현재 지원되는 Android의 엄격한 API가 모두 존재하고 올바르게 작동하는지 테스트합니다. 또한 애플리케이션 수명 주기 및 성능과 같은 기타 비 API 시스템 동작을 테스트합니다. 향후 CTS 버전에서 인텐트와 같은 soft API를 테스트할 수 있도록 지원을 추가할 계획입니다.

CTS 보고서는 공개되나요?

예. Google은 현재 구현되지는 않지만 OEM에게 웹 기반 셀프 서비스 도구를 제공하여 누구나 CTS 보고서를 볼 수 있도록 지원할 계획입니다. 제조업체는 CTS 보고서를 원하는 만큼 광범위한 잠재고객과 공유할 수 있습니다.

CTS는 어떻게 라이선스가 부여되나요?

CTS는 Android의 대부분이 사용하는 것과 동일한 Apache Software License 2.0에 따라 라이선스가 부여됩니다.

CTS에서는 기여를 허용하나요?

물론입니다. Android 오픈소스 프로젝트는 다른 구성요소와 마찬가지로 CTS 개선을 위한 기여를 허용합니다. CTS 테스트 사례의 범위와 품질을 개선하는 것이 Android를 지원하는 가장 좋은 방법 중 하나입니다.

기존 기기에서 누구나 CTS를 사용할 수 있나요?

호환성 정의 문서를 사용하려면 호환 기기가 adb 디버깅 유틸리티를 구현해야 합니다. 이는 모든 호환 기기(예: 소매점에서 구매 가능한 기기)가 CTS 테스트를 실행할 수 있어야 함을 의미합니다.

코덱이 CTS에서 인증되었나요?

예. 모든 필수 코덱은 CTS에서 인증되었습니다.

맨 위로