일부 특수 모듈 그룹에는 고유한 특성이 있습니다.
기본 모듈
기본 모듈을 사용하여 여러 모듈에서 동일한 속성을 반복할 수 있습니다. 예:
cc_defaults {
name: "gzip_defaults",
shared_libs: ["libz"],
stl: "none",
}
cc_binary {
name: "gzip",
defaults: ["gzip_defaults"],
srcs: ["src/test/minigzip.c"],
}
사전 빌드된 모듈
일부 사전 빌드된 모듈 유형은 소스 기반의 모듈과 동일한 이름을 가질 수 있습니다. 예를 들어 같은 이름의 cc_binary가 이미 있는 경우 foo라는 이름의 cc_prebuilt_binary가 있을 수 있습니다. 이를 통해 개발자는 최종 제품에 포함할 버전을 자유롭게 선택할 수 있습니다. 빌드 구성에 두 버전이 모두 포함되어 있는 경우 사전 빌드된 모듈 정의의 prefer 플래그 값에 따라 우선 순위 버전이 지정됩니다. 일부 사전 빌드된 모듈은 이름이 prebuilt로 시작하지 않습니다(예:android_app_import).
네임스페이스 모듈
Android가 Make에서 Soong으로 완전히 전환될 때까지는 Make 제품 구성에서 PRODUCT_SOONG_NAMESPACES 값을 지정해야 합니다. 이 값은 Soong이 m 명령어로 빌드하기 위해 Make로 내보내는, 공백으로 구분된 네임스페이스 목록이어야 합니다. Android의 Soong 전환이 완료되면 네임스페이스를 사용하는 세부사항이 변경될 수 있습니다.
Soong은 각 모듈이 별도의 네임스페이스 내에서 선언된 경우 다른 디렉터리의 모듈을 같은 이름으로 지정할 수 있는 기능을 제공합니다. 네임스페이스는 다음과 같이 선언할 수 있습니다.
soong_namespace {
imports: ["path/to/otherNamespace1", "path/to/otherNamespace2"],
}
네임스페이스에는 이름 속성이 없습니다. 경로는 자동으로 이름으로 할당됩니다.
각 Soong 모듈에는 트리의 위치를 기반으로 네임스페이스가 할당됩니다. 각 Soong 모듈은 현재 디렉터리 또는 가장 가까운 상위 디렉터리의 Android.bp 파일에 있는 soong_namespace에 의해 정의된 네임스페이스에 있는 것으로 간주됩니다. 이러한 soong_namespace 모듈이 없으면 모듈은 암시적 루트 네임스페이스에 있는 것으로 간주됩니다.
예를 들면 Soong은 네임스페이스 I1, I2, I3 등을 가져오는 네임스페이스 N에서 M 모듈이 선언한 종속 항목 D를 결정하려고 시도합니다.
- D가 //namespace:module 형식의 정규화된 이름인 경우 지정된 모듈 이름과 관련해 지정된 네임스페이스만 검색됩니다.
- 그렇지 않으면 Soong은 먼저 네임스페이스 N에 선언된 D 모듈을 찾습니다.
- 찾는 모듈이 없으면 Soong은 네임스페이스 I1, I2, I3 등에서 D라는 모듈을 찾습니다.
- 마지막으로 Soong은 루트 네임스페이스에서 모듈을 찾습니다.
'Android OS > : : AOSP' 카테고리의 다른 글
[빌드] Android 빌드 (0) | 2025.02.27 |
---|---|
[빌드 환경 구축] (0) | 2025.02.27 |
[빌드-개요] Android.bp 파일 형식 (0) | 2025.02.26 |
[빌드-개요] Make와 Soong 비교 (0) | 2025.02.26 |
[빌드-개요] Soong 빌드 시스템이란? (0) | 2025.02.26 |