잡동사니/GPT가 알려주는
[GPT가 알려주는] AOSP 구조란?
heylo
2025. 7. 4. 10:06
AOSP(Android Open Source Project) 구조는
우리가 흔히 Android Studio에서 쓰는 Gradle 기반 프로젝트와는 완전히 다르게 구성돼.
전체 시스템 빌드(커널, 부트로더, 시스템 앱 등 포함)를
Make 기반 빌드 시스템으로 다루는 게 핵심이야.
✅ AOSP 구조 핵심 요약
AOSP는 **"운영체제 전체"**를 빌드하기 위한 구조야.
보통 아래와 같은 상위 디렉토리 구조를 갖고 있어:
AOSP/
├── build/ # 빌드 시스템 관련 스크립트
├── system/ # 시스템 프레임워크 및 서비스
├── packages/ # 시스템 앱 및 샘플 앱들
│ └── apps/ # 앱 디렉토리 (우리가 작업할 부분)
├── vendor/ # 칩셋/회사 별 코드 (예: telechips, eroum)
│ └── eroum/ # 이 벤더의 커스터마이징 코드
│ └── packages/
│ └── apps/ # 커스터마이징 앱들 (여기 네가 network 넣을 곳)
├── device/ # 디바이스 보드 관련 설정 및 드라이버
├── external/ # 외부 라이브러리 (zlib, protobuf 등)
├── kernel/ # 리눅스 커널 소스
├── frameworks/ # 프레임워크(java) 코드
├── out/ # 빌드 결과물이 나오는 곳
✅ AOSP 방식 앱 구조 (packages/apps/YourApp)
Gradle을 사용하지 않고,
Android.mk 또는 Android.bp라는 Makefile/Blueprint 파일로 앱을 빌드해.
YourApp/
├── Android.mk ← 앱 빌드 정의 (필수!)
├── AndroidManifest.xml ← 기존 Gradle처럼
├── res/ ← 리소스
└── src/ ← 소스 코드 (com/example/yourapp/... 생략 가능)
✅ AOSP 앱 빌드 흐름
- Android.mk 또는 Android.bp로 앱 빌드 정의
- 전체 빌드 명령 make YourApp 또는 m YourApp 실행
- 시스템 전체 빌드에 포함되어 /system/app 또는 /system/priv-app에 탑재됨
✅ Android.mk 예시
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyAppName
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := MyAppName
LOCAL_CERTIFICATE := platform
LOCAL_MANIFEST_FILE := AndroidManifest.xml
include $(BUILD_PACKAGE)
✅ Gradle vs AOSP 비교
항목 | Gradle 방식 (Android Studio) | AOSP 방식 (Make/Bazel 기반) |
빌드 시스템 | Gradle | Make, Soong (Android.mk, Android.bp) |
앱 단위로 실행 | 가능 (Run 버튼으로 설치+실행) | 전체 OS 빌드 후 시스템에 포함됨 |
앱 설치 | adb install | 시스템 이미지에 포함되어 부팅 시 설치됨 |
빌드 속도 | 빠름 (앱만 빌드 가능) | 느림 (전체 빌드 필요) |
주요 용도 | PlayStore 앱, 외부 개발자 | 내장 시스템 앱, 커스텀 디바이스 앱 |
✅ 우리 상황에 적용하면?
- vendor/eroum/packages/apps 아래에 너의 앱을 넣고
- Android.mk 파일을 만들어야 하고
- device.mk나 product.mk 등에 이 앱을 PRODUCT_PACKAGES += YourApp 형태로 추가해야
- make로 전체 시스템 빌드 시 앱이 포함됨
필요하다면 **"AOSP에서 새 앱 추가하는 전체 플로우"**도 정리해줄게!
예:
- 앱 코드 이동
- Android.mk 작성
- PRODUCT_PACKAGES 등록
- 빌드 후 /system/app/YourApp/YourApp.apk 포함 확인
원하면 바로 이어서 알려줄게! 😊