반응형

AOSP 코드를 다운로드 받기 위해 Repo, Python 그리고 git을 설치해야합니다. 먼저 이 3가지를 설치합니다.

 

1. Repo 다운로드

STEP 1. 최신 Repo 설치

# Debian/Ubuntu.
$ sudo apt-get install repo

 

(수동으로 설치하는 방법도 있지만 위의 apt-get install로 하는 방법을 권장한다.)

mkdir -p ~/.bin
PATH="${HOME}/.bin:${PATH}"
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+rx ~/.bin/repo

(참고: https://gerrit.googlesource.com/git-repo/+/HEAD/README.md)

 

STEP 2. Python 설치

sudo apt-get install python3

 

최신 우분투 버전(20.04 LTS 이후) python 2가 기본 저장소에서 제외되었으므로 python3으로 설치합니다.

 

STEP 3. git 설치

sudo apt-get install git

 

이후 git config를 설정합니다.

git config --global user.name "Honghong"
git config --global user.email "xxxx123@naver.com"

 

 

STEP 4. 공식 AOSP 코드를 다운로드

 

최선 버전(브랜치)의 AOSP 코드를 다운로드 받고 싶은 경우:

repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release
repo sync -j4

 

특정 버전(브랜치)의 AOSP 코드를 다운로드 받고 싶은 경우:

# android 16의 16.0.0_r4 버전을 받고 싶은 경우
repo init -u https://android.googlesource.com/platform/manifest -b android-16.0.0_r4
repo sync -j4

# android 12의 12.1.0_r27 버전을 받고 싶은 경우
repo init -u https://android.googlesource.com/platform/manifest -b android-12.1.0_r27
repo sync -j4

 

여기서 특정 버전(브랜치)를 알고 싶다면, 아래를 확인한다.

(1) https://android.googlesource.com/platform/manifest 링크에 들어가서 Branches에 More..를 클릭한다. 

 

 

(2) 보통 android-..으로 시작하므로 이 중에서 원하는 버전(브랜치)를 찾고 repo init의 -b 인자로 넣어준다. 

 

2. 빌드 해보기

STEP 1. 빌드에 필요한 환경변수 설정

cd <플랫폼 코드 다운로드한 경로>
source build/envsetup.sh


STEP 2. 원하는 Product 설정을 위해 lunch 명령어 실행

lunch <product>-<release>-<variant>

 

 

TARGET_PRODUCT: 빌드 대상이 되는 기기의 이름이나 제품군을 정의한다.

TARGET_RELEASE: 최신 Android 소스 트리(특히 Android 14~15 이후)에서 중요해진 개념으로, 소프트웨어 릴리스 구성을 의미 (즉, 소프트웨어 버전이라고 보면 된다)

TARGET_BUILD_VARIANT:  빌드된 결과물에 포함될 권한과 디버깅 도구의 수준을 결정한다.

 

product에 해당하는 리스트

$ list_products
aosp_64bitonly_x86_64
aosp_arm
aosp_arm64
aosp_arm64_fullmte
aosp_arm64_plus_armv7
aosp_cf_arm64_auto
aosp_cf_arm64_minidroid
aosp_cf_arm64_only_phone
aosp_cf_arm64_only_phone_hwasan
aosp_cf_arm64_only_phone_vendor
aosp_cf_arm64_phone
aosp_cf_arm64_phone_fullmte
aosp_cf_arm64_phone_hwasan
aosp_cf_arm64_phone_pgagnostic
aosp_cf_arm64_phone_vendor
aosp_cf_arm64_slim
aosp_cf_arm_minidroid
aosp_cf_riscv64_minidroid
aosp_cf_riscv64_phone
aosp_cf_riscv64_slim
aosp_cf_riscv64_wear
aosp_cf_x86_64_auto
aosp_cf_x86_64_auto_dd
aosp_cf_x86_64_auto_dewd
aosp_cf_x86_64_auto_md
aosp_cf_x86_64_auto_mdnd
aosp_cf_x86_64_auto_portrait
aosp_cf_x86_64_foldable
aosp_cf_x86_64_host
aosp_cf_x86_64_minidroid
aosp_cf_x86_64_only_phone
aosp_cf_x86_64_only_phone_hsum
aosp_cf_x86_64_pc
aosp_cf_x86_64_phone
aosp_cf_x86_64_phone_pgagnostic
aosp_cf_x86_64_phone_soong_system
aosp_cf_x86_64_phone_vendor
aosp_cf_x86_64_slim
aosp_cf_x86_64_ssi
aosp_cf_x86_64_tv
aosp_cf_x86_64_wear
aosp_cf_x86_go_phone
aosp_cf_x86_tv
aosp_cf_x86_wear
aosp_cheetah_car
aosp_husky_car
aosp_panther_car
aosp_riscv64
aosp_tangorpro_car
aosp_trout_arm64
aosp_trout_x86_64
aosp_tv_arm64
aosp_tv_x86
aosp_x86
aosp_x86_64
aosp_x86_arm
arm_krait
arm_v7_v8
armv8
armv8_cortex_a55
armv8_kryo385
csi_arm
csi_arm64
csi_x86
csi_x86_64
db845c
db845c_mini
full
full_x86
generic
generic_system_arm64
generic_system_x86
generic_system_x86_64
generic_system_x86_arm
generic_x86
gsi_arm
gsi_arm64
gsi_car_arm64
gsi_car_x86_64
gsi_tv_arm
gsi_tv_arm64
gsi_x86
gsi_x86_64
hikey
hikey32
hikey64_only
hikey960
hikey960_tv
hikey_tv
linaro_swr
linux_bionic
mainline_sdk
mainline_system_arm64
mainline_system_x86
mainline_system_x86_64
mainline_system_x86_arm
mgsi_arm
mgsi_arm64
mgsi_x86
mgsi_x86_64
mini_arm64
mini_armv7a_neon
mini_x86
mini_x86_64
module_arm
module_arm64
module_arm64only
module_riscv64
module_x86
module_x86_64
module_x86_64only
ndk
qemu_trusty_arm64
riscv64
sdk
sdk_atv64_arm64
sdk_atv_x86
sdk_car_arm64
sdk_car_cw_x86_64
sdk_car_dewd_x86_64
sdk_car_md_arm64
sdk_car_md_x86_64
sdk_car_x86_64
sdk_phone16k_arm64
sdk_phone16k_x86_64
sdk_phone64_arm64
sdk_phone64_arm64_minigbm
sdk_phone64_arm64_riscv64
sdk_phone64_x86_64
sdk_phone64_x86_64_minigbm
sdk_phone64_x86_64_riscv64
sdk_slim_arm64
sdk_slim_x86_64
sdk_tablet_arm64
sdk_tablet_x86_64
sdk_with_runtime_apis
silvermont
sm8x50
trout_arm64_ds
yukawa

 

위에서 원하는 product을 골랐으면, lunch <원하는 프로덕트>를 실행해보자

예를들어 아래를 입력한다.

lunch aosp_x86

 

이후 어떤 releases 버전이 있는지 확인을 위해 아래를 입력한다.

$ list_releases
aosp_current
ap2a
ap3a
ap4a
bp1a
bp2a
bp3a
bp4a
trunk_staging

 

이후 어떤 variants 버전이 있는지 확인을 위해 아래를 입력한다.

$ list_variants
user
userdebug
eng

 

 

최종 lunch 커맨드는 아래와 같다

lunch aosp_arm-bp4a-eng

 

STEP 3. 모듈 빌드 실행

테스트로 빌드해본다

cd external/wpa_supplicant_8
mm

 

 

참고자료

https://i5i5.tistory.com/855

 

 

 

 

 

 

 

반응형