잡동사니/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 앱 빌드 흐름

  1. Android.mk 또는 Android.bp로 앱 빌드 정의
  2. 전체 빌드 명령 make YourApp 또는 m YourApp 실행
  3. 시스템 전체 빌드에 포함되어 /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에서 새 앱 추가하는 전체 플로우"**도 정리해줄게!
예:

  1. 앱 코드 이동
  2. Android.mk 작성
  3. PRODUCT_PACKAGES 등록
  4. 빌드 후 /system/app/YourApp/YourApp.apk 포함 확인

원하면 바로 이어서 알려줄게! 😊