Chuyển đổi từ Make sang Soong

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.

  1. 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ệp Android.mk và cố gắng xuất một tệp Android.bp tương tự. Công cụ này có thể chuyển đổi hầu hết các tệp Android.mk thành Android.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
    
  2. Tạo bằng Android.mk: sh m <module-name>

  3. Chạy công cụ chuyển đổi androidmk: sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

  4. 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.
  5. Xoá tệp Android.mk và tạo bằng tệp Android.bp.

  6. 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.

  7. 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.