[AOSP] Ubuntu에서 안드로이드 13 빌드하기

들어가며

이 포스트에서는 안드로이드 운영체제의 소스코드를 받아서 게스트 환경(Ubuntu 18.04)에 맞게 빌드하고, 안드로이드 에뮬레이터에 이미지를 플래싱해서 구동시키는 과정을 기록한다.

안드로이드는 다양한 폼 팩터를 가진 다양한 기기를 위해 만들어진 오픈 소스 소프트웨어 스택이다. 오픈 소스이기 때문에 코드가 누구에게나 공개되어 있다. 사용자들이 자유롭게 빌드할 수 있으며, 하드웨어 구성에 맞게 커스터마이징할 수도 있다.

빌드의 전체 과정은 안드로이드 공식 홈페이지 포스팅(https://source.android.com/docs/setup/start)을 따르지만, 필요에 따라 트러블슈팅, 최적화 과정을 추가하였다.

 

안드로이드 버전

안드로이드 버전의 네이밍은 디저트 이름을 알파벳 순서로 사용하던 전통에서 숫자로 버전을 명시하는 방법으로 변화했다. 안드로이드 공식 페이지(https://source.android.com/docs/setup/about/build-numbers)에서는 플랫폼 코드명, 버전, API 레벨 및 NDK 릴리스에 대한 정보와 함께 이와 관련된 빌드 ID 정의에 대한 설명을 함께 제공한다.

 

최소사양

빌드를 위해서는 PC환경을 권장하며 아래의 최소 요구사항을 만족해야 한다.

  • Android 2.3(진저브레드) 이상 버전의 경우 64비트 시스템
  • 코드를 체크아웃하기 위해 250GB 이상의 저장 공간
  • 최소 64GB 이상의 RAM
  • Ubuntu 18.04 이상의 운영체제(Windows와 MAC은 미지원)
Google은 최소 64GB의 RAM을 권장하며 그 이하로는 테스트하지 않는다. 이보다 적은 용량을 사용하면 빌드가 OOM 종료됩니다.
2021년 6월 현재 Google은 내부적으로 64GB RAM이 장착된 72코어 머신을 사용하고 있으며, 전체 빌드에는 약 40분이 소요된다고 한다(증분 빌드의 경우 정확히 어떤 파일이 수정되었는지에 따라 몇 분 정도 소요됨). 반면 비슷한 램 용량을 갖춘 6코어 머신은 3시간이 걸린다.

 

사전 필요 패키지 설치

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

 

Repo 설치

  sudo apt-get update
  sudo apt-get install repo
E: Unable to locate package repo 에러 발생 시 직접 다운받아야 한다.

1. 홈 경로에 폴더 생성 및 환경변수 설정
mkdir ~/bin
> PATH=$PATH:~/bin

2. 다운로드 및 실행권한 부여
> curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
> chmod a+x ~/bin/repo

3. python3 버전만 지원하므로 파이썬에 심볼릭 링크를 걸어준다.
> sudo ln -s /usr/bin/python3 /usr/bin/python
repo version

repo version 실행 결과

 

 repo 바이너리의 자세한 실행 명령과 설명은 https://source.android.com/docs/setup/create/repo 에서 확인할 수 있다.

 

소스코드 다운로드

repo를 설치했다면, 우분투에서 소스 저장소(repository) 설정을 한다. 문서(https://source.android.com/docs/setup/download/downloading)를 참고한다.

1. 빈 경로를 생성하고 작업 공간을 준비한다.

mkdir /DATA
cd /DATA

 

2. Git에 접근하기 위한 계정정보를 등록한다.

git config --global user.name [Your Name]
git config --global user.email [you@example.com]

 

3. 'repo init'을 실행해서 가장 최신의 저장소 정보를 불러온다. 

repo init -u https://android.googlesource.com/platform/manifest

 

4. 메인 브랜치를 체크아웃한다.

repo init -u https://android.googlesource.com/platform/manifest -b main

 

4-1. 또는 원하는 버전의 브랜치를 체크아웃 한다.(https://android.googlesource.com/platform/manifest/+refs)

명령 예시는 현재(2023.09)버전의 가장 최신 버전인 r74를 사용한다.

동시에 용량최적화를 위해 옵션을 사용한다.

git history, 개발자가 남긴 태그까지 전부 받을 필요가 없으니 -c --depth=1 --no-tags 옵션을 사용한다.

-c : 단일 브랜치만 다운로드, 브랜치간 전환 불가

--no-tags: 태그정보 없이 소스코드 다운로드

--depth : log history 개수 지정

repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r74 -c --depth=1 --no-tags
repo sync -j4  -q -c --no-tags
repo start android-13.0.0_r74  --all

 

5. MacOS용 파일 삭제

find ./prebuilts/ -name "*darwin-x86*" -type d
find ./prebuilts/ -name "*darwin-x86*" -type d -exec rm -rf {} \;
find ./.repo -name "*darwin-x86*" -type d 
find ./.repo -name "*darwin-x86*" -type d -exec rm -rf {} \;

 

 

참고

 

Android Emulator : Project Marble Improvements

Posted by: Sam Lin, Product Manager, Android

medium.com

 

소스 다운로드  |  Android 오픈소스 프로젝트  |  Android Open Source Project

소스 다운로드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 소스 트리는 Google에서 호스팅하는 Git 저장소에 있습니다. Git 저장소에는 소스 변경사항

source.android.com

 

안드로이드 에뮬레이터 환경에서 OS 이미지 적용을 위한 안드로이드 OS 풀 소스 빌드 방법

이번 포스팅은 안드로이드 OS 풀 소스를 안드로이드 에뮬레이터 환경에 맞춰 빌드하는 과정과 빌드 완료 후, 안드로이드 에뮬레이터에 생성된 이미지 파일을 플래싱하여 구동시키는 것을 설명

programist.tistory.com

 

반응형