Android가 Bazel 빌드 시스템으로 이동

Google 개발자 Android 개발의 배후에 있는 사람은 프로젝트를 이동한다는 발표를 통해 알 수 있습니다. 오픈 소스 안드로이드 (AOSP) Bazel 빌드 시스템 사용 현재 Soong, Ninja 및 Make 빌드 시스템 대신.

Bazel 지원이 이미 Android 저장소에 추가되었습니다., 그러나 전환 기본적으로 새 빌드 시스템에여러 버전에 걸쳐 있습니다. 마이그레이션을 가능한 한 쉽고 투명하게 만드는 플랫폼.

2020년과 2021년에는 큰 변화가 없을 것으로 예상됩니다. 플랫폼 빌드 워크플로우에서, 기존 빌드 시스템에 대한 지원은 유지됩니다.

점진적 마이그레이션을 허용하려면 약간의 변화 Android 빌드를 단순화하기 위해 이미 Bazel에 포함되어 있습니다. Ninja 형식의 빌드 파일을 구문 분석하고 실행하는 기능과 같은 기능입니다.

안드로이드 플랫폼의 경우, Bazel로 전환하면 빌드 프로세스 구성의 유연성이 향상되고, 빌드 진행 및 종속성 연결의 검사/모니터링을 개선하고, 반복 가능한 빌드를 구현하고, 복잡한 빌드 스크립트를 단순화하고, 다양한 빌드 및 테스트 처리기와의 통합을 개선하고, 빌드 시간을 단축합니다.

Bazel로 마이그레이션하면 AOSP에서 다음을 수행할 수 있습니다.

AOSP 컴파일 구성을 위한 더 많은 유연성 제공(조건부 지원 향상)
AOSP 빌드 진행 및 종속성에 대한 더 많은 인사이트 허용
정확하고 재현 가능한(완전한) AOSP 빌드 사용
AOSP 빌드의 복잡성을 줄이는 구성 메커니즘 도입
빌드 및 테스트 활동의 더 큰 통합 허용
이 모든 것을 결합하여 빌드 시간과 경험을 크게 개선합니다.
Bazel 커뮤니티로의 이 마이그레이션의 이점은 다음과 같습니다.

Android 플랫폼 빌드를 지원하기 위해 Bazel에 지속적으로 상당한 투자
Bazel 생태계 및 커뮤니티를 확장하여 처음에는 수만 명의 Android 플랫폼 개발자와 Android 휴대폰 OEM(Original Equipment Manufacturer) 및 칩 공급업체를 포함합니다.
Android 앱 구축을 위한 Google의 Bazel 규칙은 오픈 소스로 제공되고 AOSP에서 사용되며 Google이 Android/Bazel 커뮤니티와 협력하여 유지 관리합니다.
Android 앱 빌드를 위한 더 나은 Bazel 지원
Android 플랫폼(Rust, Java, Python, Go 등)을 빌드하는 데 사용되는 다른 언어에 대한 더 나은 규칙 지원
확장된 Bazel 커뮤니티에 도움이 되는 Bazel 장기 지원(LTS) 릴리스에 대한 강력한 지원
개선된 문서(자습서 및 참조)

생태계 Android의 Bazel은 참여하는 참가자의 수를 확장할 것입니다. 개발에서, Android 애플리케이션을 빌드하기 위해 애플리케이션을 단순화합니다. (Google이 Android 앱용 스크립트를 빌드하기 위해 오픈 소스를 계획하는 것을 포함) Android에서 사용되는 다양한 프로그래밍 언어(Rust, Java, Python, Go)에 대한 지원을 개선하고 장기 빌드 기간을 생성하기 위한 리소스를 제공하며 더 좋고 광범위한 문서.

Bazel은 Google 엔지니어가 개발했습니다. 회사 내부 프로젝트의 대부분을 구축하는 데 사용됩니다. 프로젝트 빠른 시공 속도를 자랑하며, 캐싱 기술과 구성 프로세스의 병렬화가 사용됩니다.

도구도 반복 가능한 조립 보장즉, 개발자의 컴퓨터에서 프로젝트를 빌드한 결과는 지속적 통합 서버와 같은 타사 시스템에서 빌드한 것과 정확히 동일합니다. 추가 기능은 확장 연결 메커니즘을 통해 구현됩니다.

Make 및 Ninja와 달리 Bazel은 더 높은 수준의 접근 방식을 취합니다. 빌드 중인 파일에 대한 명령 바인딩을 정의하는 대신 더 추상적인 미리 빌드된 블록을 사용하고 빌드/대상 프레임워크를 정의하는 빌드 규칙을 생성합니다.

프로젝트 구성요소 BUILD 텍스트 파일에 설명되어 있습니다. 라이브러리, 실행 파일 및 테스트 패키지 형태로 개별 파일 수준 및 컴파일러 호출 명령에 대해 자세히 설명하지 않습니다.

BUILD 파일에서 모든 종속성은 완전히 정의되어야 합니다. 변경 후(변경된 파일만 다시 빌드됨) 구성 요소를 다시 빌드하고 빌드 프로세스를 병렬화하기 위한 결정을 기반으로 합니다.

출처 : https://developers.googleblog.com


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.