| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- context
- makefile
- pagefile.sys
- interrupt context
- fscanf
- Shared Folder
- 소캣
- ubuntu
- 디스크 축소
- 속도저하
- 프레임버퍼
- 환경 변수
- 디스크립터
- intents
- interrupt handler
- gparted
- usb2.0
- sprintf
- memcmp
- HDR
- fprintf
- sscanf
- jenkins
- layouts
- context switch
- 문자형 디바이스 파일
- 멀티프로세싱
- 젠킨스
- activities
- DMA
- Today
- Total
do{학습}while
AOSP) 빌드 도구 Makefile, Soong 본문
Makefile과, Soong이 AOSP에서 사용하는 빌드 도구 입니다. 이 두 빌드 도구는 AOSP 내의 소스코드를 컴파일하고 패키징하여 최종적으로 실행 가능한 안드로이드 이미지를 생성하는 역할을 합니다.
Makefile ( Android.mk )
Makefile은 전통적인 빌드 도구 입니다. 안드로이드 7 버전까지 Makefile로 빌드를 진행하였습니다. Makefile은 타겟(target)과 규칙(rules)와 같은 요소로 이루어져있습니다. 그리고 Makefile은 의존성 관리를 통해 변경된 파일들만 다시 컴파일하게 설계가 되어 있어 빌드 시간을 단축할 수 있습니다.
하지만 Makefile의 복잡성, Makefile의 빌드 속도의 한계, Soong의 직관적이고 가독성 높은 구문으로 인해 Makefile에서 Soong으로 전환을 진행하고 있습니다.
Soong ( Android.bp )
Soong은 Goole에서 AOSP 빌드 시스템을 현대화하기 위해 개발한 새로운 빌드 시스템입니다.
Soong은 Python 기반의 Blueprint라는 언어로 정의된 빌드 파일을 사용합니다. 빌드 파일들은 JSON과 유사한 구조로, 빌드 규칙과 설정을 명확하게 정의할 수 있습니다.
Soong은 빌드시스템을 모듈화하여 코드의 재사용성과 유지보수성을 향상시켰습니다. 각 모듈은 독립적으로 빌드될 수 있고, 의존성을 자동을 처리합니다.이렇게 모듈화가 되었기 때문에 모듈별 병렬적으로 빌드가 가능하여 Makefile보다 높은 성능을 가질 수 있게 하였습니다.

점차적으로 soong 빌드 시스템으로 전환되어 가고 있습니다.
기존에 있는 makefile을 soong 빌드 시스템에서 사용할 수 있는 포맷으로 변환하기 위해 사용된 도구가 Kati입니다. makefile을 가지고 Kati는 출력물로 ninja 빌드 시스템에서 입력으로 사용될 ninja 파일을 생성합니다.
생성된 .ninja파일은 ninja 빌드 시스템을 통해 동적라이브러리, apk, 실행 가능한 파일 등 변환하게 해줍니다.
요약하자면..
Makefile
- 초기 안드로이드에 사용되었던 빌드 시스템
- 규모가 큰 프로젝트에 부적합(복잡성, 성능적 측면)
- Kati를 사용하여 Soong 빌드시스템에서 사용될 수 있다
Soong
- Python 기반 Blueprint언어로 작성
- 모듈화 -> 병렬적 빌드 -> 성능 증가
- 직관적임
용어
패키징(pakaging)
소프트웨어 개발 과정에서 소스코드, 리소스, 라이브러리, 설정 파일 등을 하나의 배포 가능한 단위로 묶는 작업을 의미합니다.
참고
https://source.android.com/docs/setup/build?hl=ko
Soong 빌드 시스템 | Android 오픈소스 프로젝트 | Android Open Source Project
Soong 빌드 시스템 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 7.0 이전 버전에서는 GNU Make를 독점적으로 사용하여 빌드 규칙을 설명하고 실행했습니
source.android.com
'AOSP' 카테고리의 다른 글
| AOSP) 빌드 시스템 [2] : Product, Board, Module 정보 전달 (0) | 2024.08.28 |
|---|---|
| AOSP) 빌드 시스템[1] : Build System (0) | 2024.08.27 |
| AOSP) 안드로이드 빌드 관련 명령어 (0) | 2024.08.22 |
| AOSP) adb(Android Debug Bridge) (0) | 2024.08.20 |
| AOSP) 코드 수정 : 시스템 앱 내 텍스트 변경 (0) | 2024.08.20 |