[Android] AOSP 리눅스(우분투)환경에서 다운로드 받기
2023. 3. 22. 00:39AOSP 코드를 다운로드 받기 위해 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
참고자료
'Android > Android' 카테고리의 다른 글
| [Android] seapp_contexts 예제 형식 (0) | 2024.03.06 |
|---|---|
| [Android] Android.bp 파일 이해하기 (문법 이해) (0) | 2023.03.30 |
| (작성중) [Android] Linux환경에서 cmd-line tools 설치 및 SDK manager 이용하기 (0) | 2023.03.20 |
| [Android] Android 앱 이름 바꾸기 (0) | 2023.02.04 |
| [Android] Android 로그캣(Logcat) 보는 방법, Android Studio 상에서. (0) | 2022.09.22 |
