Android 7.0 이전 버전에서는 GNU Make를 독점적으로 사용하여 빌드 규칙을 설명하고 실행했습니다. Make 빌드 시스템은 널리 지원되고 사용되지만, Android 규모에서는 느리고 오류가 발생하며 확장이 불가능하고 테스트하기 어려웠습니다. Soong 빌드 시스템은 Android 빌드에 필요한 유연성을 제공합니다. Android 빌드 시스템이 크게 변경되어 Make (Android.mk
) 빌드 시스템이 지원 중단되고 Soong (Android.bp
)으로 대체됩니다.
따라서 플랫폼 개발자는 가능한 한 빨리 Make에서 Soong으로 전환하는 것이 좋습니다. Android Building Google 그룹에 질문을 보내 지원을 받으세요.
Soong이란 무엇인가요?
Soong 빌드 시스템은 Make를 대체하기 위해 Android 7.0(Nougat)에 도입되었습니다. 이 시스템은 Kati GNU Make 클론 도구와 Ninja 빌드 시스템 구성요소를 활용하여 Android의 빌드 속도를 높입니다.
Android 오픈소스 프로젝트 (AOSP)의 Android Make 빌드 시스템 설명에서 일반적인 안내를 살펴보고, Android.mk 작성자를 위한 빌드 시스템 변경사항을 참고하여 Make에서 Soong으로 전환하는 데 필요한 수정사항을 알아보세요. 주요 용어의 정의는 용어집의 빌드 관련 항목에서, 전체 세부정보는 Soong 모듈 참조에서 확인하세요.
Make와 Soong 비교
다음은 Make 구성과 Soong 구성(Blueprint 또는 .bp
) 파일에서 동일한 작업을 하는 Soong을 비교한 것입니다.
Make 예
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libxmlrpc++
LOCAL_MODULE_HOST_OS := linux
LOCAL_RTTI_FLAG := -frtti
LOCAL_CPPFLAGS := -Wall -Werror -fexceptions
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src
LOCAL_SRC_FILES := $(call \
all-cpp-files-under,src)
include $(BUILD_SHARED_LIBRARY)
Soong 예
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
테스트별 Soong 구성 예는 간단한 빌드 구성을 참고하세요.
기본 변환 절차
Android.mk
파일을 Android.bp
파일로 변환하는 작업은 일반적으로 androidmk
도우미 도구를 사용하여 다음 일반 워크플로를 따릅니다. 일반적으로 변환 시 다음 단계를 따릅니다.
터미널 환경을 설정하고
androidmk
도구를 빌드합니다.androidmk
은Android.mk
파일을 파싱하고 유사한Android.bp
파일을 출력하려고 시도하는 명령줄 도구입니다. 대부분의Android.mk
파일을 수동 변경 없이 또는 거의 없이Android
.bp로 변환할 수 있습니다.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
Android.mk
로 빌드합니다.sh m <module-name>
androidmk
변환 도구를 실행합니다.sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
Android.bp
파일을 수동으로 수정합니다.androidmk
도구에서 발생한 경고를 해결합니다.- 저작권 헤더를 유지하거나 추가합니다. 새 항목을 추가하는 경우 현재 연도를 사용합니다.
Android.mk
파일을 삭제하고Android.bp
파일로 빌드합니다.빌드된 아티팩트를 비교하거나 단위 및 기능 테스트를 실행하여 변환을 검증합니다.
변경사항을 저장하고 검토를 위해 업로드합니다.
자세한 내용은 Android.bp 파일 형식을 참고하세요.