Google phát triển hệ thống lắp ráp mô-đun Soong cho Android

Google đang phát triển một hệ thống xây dựng soong, được thiết kế để thay thế các tập lệnh xây dựng cũ cho nền tảng Android, dựa trên việc sử dụng tiện ích make. Soong gợi ý sử dụng cách khai báo đơn giản mô tả quy tắc lắp ráp mô-đun, được cho trong các tệp có phần mở rộng “.bp” (bản thiết kế). Định dạng tệp gần với JSON và nếu có thể, lặp lại cú pháp và ngữ nghĩa của tệp hợp ngữ bazel. Mã được viết bằng Go và được phân phối theo giấy phép Apache 2.0.

Các tệp xây dựng Soong không hỗ trợ các câu lệnh điều kiện và biểu thức phân nhánh mà chỉ mô tả cấu trúc dự án, các mô-đun và các phụ thuộc được sử dụng khi xây dựng. Các tệp cần xây dựng được mô tả bằng cách sử dụng mặt nạ và được nhóm thành các gói, mỗi gói là một tập hợp các tệp có các phần phụ thuộc liên quan. Có thể định nghĩa các biến. Các biến và thuộc tính được nhập đúng loại (loại biến được chọn động khi gán lần đầu và đối với các thuộc tính là tĩnh tùy thuộc vào loại mô-đun). Các phần tử phức tạp của logic hợp ngữ được chuyển đến các trình xử lý, bằng văn bản bằng ngôn ngữ Go.

Soong đan xen với một dự án lớn hơn Blueprint, trong đó một hệ thống hợp ngữ meta không gắn với Android đang được phát triển, hệ thống này dựa trên các tệp có mô tả mô-đun khai báo, tạo ra các tập lệnh hợp ngữ Ninja (thay thế cho make), mô tả các lệnh cần chạy để xây dựng và các phần phụ thuộc. Thay vì sử dụng các quy tắc phức tạp hoặc ngôn ngữ dành riêng cho miền để xác định logic xây dựng, Blueprint sử dụng các trình xử lý dành riêng cho dự án bằng ngôn ngữ Go (Soong về cơ bản là một tập hợp các trình xử lý tương tự dành cho Android).

Cách tiếp cận này cho phép các dự án lớn và không đồng nhất, chẳng hạn như Android, triển khai các phần tử phức tạp của logic lắp ráp trong mã bằng ngôn ngữ lập trình cấp cao, đồng thời duy trì khả năng thực hiện các thay đổi đối với các mô-đun liên quan đến tổ chức lắp ráp và cấu trúc dự án bằng cách sử dụng cú pháp khai báo đơn giản . Ví dụ: trong Soong, việc chọn cờ trình biên dịch được thực hiện bởi trình xử lý llvm.govà việc áp dụng các cài đặt cụ thể cho kiến ​​trúc phần cứng được thực hiện bởi trình xử lý nghệ thuật.go, nhưng việc liên kết các tệp mã được thực hiện trong tệp “.bp”.

cc_thư viện {
...
srcs: ["generic.cpp"],
vòm: {
cánh tay: {
srcs: ["arm.cpp"],
},
x86:{
src: ["x86.cpp"],
},
},
}

Nguồn: opennet.ru

Thêm một lời nhận xét