[AOSP] Android Make 시스템
Android Make 시스템
- 각 모듈이 Android.mk 로 자신을 정의
- 상위 product / device 설정이 어떤 모듈을 포함할지 결정
- make 계열 도구가 이를 모아 system/vendor/product 이미지 등을 생성하는 구조
Android.mk
1) 예시
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_app
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := MyApp
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
LOCAL_PATH: 현재 디렉토리include $(CLEAR_VARS): 이전 모듈 변수 초기화LOCAL_*: 이 모듈 속성 정의include $(BUILD_PACKAGE): “이건 APK 모듈이다” 라고 규칙 적용 2) 설정방법LOCAL_PACKAGE_NAME: 설치될 앱 이름LOCAL_SRC_FILES: 소스 파일LOCAL_RESOURCE_DIR: 리소스 경로LOCAL_CERTIFICATE: 서명키 (platform,shared,media,testkey등)LOCAL_PRIVILEGED_MODULE := true: priv-app 배치LOCAL_PROPRIETARY_MODULE := true: vendor 영역 배치LOCAL_PRODUCT_MODULE := true: product 영역 배치
BoardConfig.mk
보드/타겟 하드웨어 설정 파일
- CPU 아키텍처
- 커널/부트이미지 관련 옵션
- 파티션 크기
- vendor/system 경로 관련 설정
device.mk
해당 디바이스에 포함할 패키지나 설정을 정의
PRODUCT_PACKAGES += MyApp- 복사할 파일
- 시스템 프로퍼티
- 오버레이 설정
product.mk
제품 정의 파일 (최종 제품 구성 모음)
- 어떤
device.mk를 inherit 할지 - 어떤 패키지를 넣을지
- system/product/vendor 파티션 구성을 어떻게 할지
Android.mk 와 Android.bp 차이
1) Android.mk
“변수 세팅 후 규칙 include”
Android.mk 는 절차적 느낌
include $(CLEAR_VARS)
LOCAL_MODULE := libx
LOCAL_SRC_FILES := x.cpp
include $(BUILD_SHARED_LIBRARY)
2) Android.bp
“타입과 속성을 선언”
Android.bp 는 선언적 느낌
cc_library_shared {
name: "libx",
srcs: ["x.cpp"],
}
Leave a comment