Trước khi phát hành Android 7.0, Android chỉ sử dụng GNU Make để mô tả và thực thi các quy tắc xây dựng. Hệ thống bản dựng Make được hỗ trợ và sử dụng rộng rãi, nhưng ở quy mô của Android, hệ thống này trở nên chậm, dễ xảy ra lỗi, không thể mở rộng và khó kiểm thử. Hệ thống bản dựng Soong mang đến sự linh hoạt cần thiết cho các bản dựng Android. Chúng tôi đang thực hiện những thay đổi đáng kể đối với hệ thống tạo Android, ngừng sử dụng hệ thống tạo Make (Android.mk
) và thay thế bằng Soong (Android.bp
).
Vì lý do này, các nhà phát triển nền tảng cần chuyển từ Make sang Soong càng sớm càng tốt. Gửi câu hỏi đến nhóm Android Building trên Google Groups để được hỗ trợ.
Soong là gì?
Hệ thống bản dựng Soong được ra mắt trong Android 7.0 (Nougat) để thay thế Make. Công cụ này tận dụng công cụ sao chép GNU Make Kati và thành phần hệ thống bản dựng Ninja để tăng tốc các bản dựng của Android.
Hãy xem phần mô tả Hệ thống tạo bản dựng Android Make trong Dự án nguồn mở Android (AOSP) để biết hướng dẫn chung và Các thay đổi đối với hệ thống tạo bản dựng dành cho người viết Android.mk để tìm hiểu về những điểm cần sửa đổi để chuyển từ Make sang Soong. Hãy xem các mục liên quan đến bản dựng trong bảng chú giải để biết định nghĩa về các thuật ngữ chính và Tài liệu tham khảo về mô-đun Soong để biết đầy đủ thông tin chi tiết.
So sánh giữa Make và Soong
Sau đây là so sánh cấu hình Make với Soong để đạt được kết quả tương tự trong tệp cấu hình Soong (Blueprint hoặc .bp
).
Ví dụ về cách tạo
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)
Ví dụ về Soong
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
Để xem các ví dụ về cấu hình Soong dành riêng cho kiểm thử, hãy xem phần Cấu hình bản dựng đơn giản.
Quy trình chuyển đổi cơ bản
Việc chuyển đổi tệp Android.mk
thành tệp Android.bp
thường tuân theo quy trình chung này bằng cách sử dụng công cụ hỗ trợ androidmk
. Nói chung, bạn sẽ thực hiện các bước sau trong quá trình chuyển đổi.
Thiết lập môi trường thiết bị đầu cuối và tạo công cụ
androidmk
.androidmk
là một công cụ dòng lệnh phân tích cú pháp tệpAndroid.mk
và cố gắng xuất một tệpAndroid.bp
tương tự. Công cụ này có thể chuyển đổi hầu hết các tệpAndroid.mk
thànhAndroid
.bp mà không cần hoặc chỉ cần một vài thay đổi thủ công.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
Tạo bằng
Android.mk
:sh m <module-name>
Chạy công cụ chuyển đổi
androidmk
:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
Chỉnh sửa tệp
Android.bp
theo cách thủ công:- Xử lý mọi cảnh báo do công cụ
androidmk
phát ra. - Giữ lại hoặc thêm tiêu đề bản quyền. Nếu bạn thêm một năm mới, hãy sử dụng năm hiện tại.
- Xử lý mọi cảnh báo do công cụ
Xoá tệp
Android.mk
và tạo bằng tệpAndroid.bp
.Xác thực quá trình chuyển đổi bằng cách so sánh các cấu phần phần mềm đã tạo hoặc chạy các kiểm thử đơn vị và kiểm thử chức năng.
Lưu các thay đổi và tải lên để xem xét.
Tham khảo định dạng tệp Android.bp để biết thêm thông tin.