[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"],
}

Categories:

Updated:

Leave a comment