Các phần phụ thuộc gốc với trình bổ trợ Android cho Gradle

Các thư viện AAR có thể chứa các phần phụ thuộc gốc mà Trình bổ trợ Android cho Gradle có thể sử dụng. AGP cũng có thể tạo ra các AAR để hiển thị các thư viện gốc cho đối tượng sử dụng.

Sử dụng phần phụ thuộc gốc

Kể từ phiên bản 4.0 của Trình bổ trợ Android cho Gradle, bạn có thể nhập phần phụ thuộc C/C++ từ các AAR đã liên kết trong tệp build.gradle. Gradle sẽ tự động cung cấp những phần phụ thuộc này cho hệ thống xây dựng gốc, nhưng bạn cần phải định cấu hình hệ thống xây dựng để sử dụng các thư viện và tiêu đề đã nhập. Vì các phần phụ thuộc C/C++ được phân phối dưới dạng các AAR, nên những đường liên kết sau về các AAR tổng quát có thể sẽ hữu ích:

  • Tạo Thư viện Android gồm tài liệu AAR tổng quát và cách tích hợp AAR vào dự án, đặc biệt là khi bạn muốn sử dụng AAR dưới dạng một phần phụ thuộc C/C++ cục bộ.
  • Thêm các phần phụ thuộc của bản dựng để biết thông tin về cách thêm các phần phụ thuộc vào tệp build.gradle, đặc biệt là các phần phụ thuộc từ xa.

Tài liệu này tập trung vào cách định cấu hình hệ thống xây dựng gốc và giả định rằng bạn đã thêm AAR của phần phụ thuộc C/C++ vào môi trường bản dựng Gradle của dự án.

Phần phụ thuộc gốc trong AAR

Các phần phụ thuộc AAR của các mô-đun Gradle có thể làm hiển thị các thư viện gốc để ứng dụng sử dụng. Bên trong AAR, thư mục prefab chứa gói Prefab, bao gồm tiêu đề và thư viện của phần phụ thuộc gốc.

Mỗi phần phụ thuộc có thể hiển thị tối đa một gói Profab, bao gồm một hoặc nhiều mô-đun. Mô-đun Prefab là một thư viện đơn lẻ (có thể là thư viện chia sẻ, thư viện tĩnh hoặc thư viện chỉ chứa tiêu đề).

Để sử dụng các thư viện đó, bạn cần biết tên gói và tên mô-đun. Theo quy ước, tên gói sẽ khớp với tên cấu phần phần mềm Maven và tên mô-đun sẽ khớp với tên thư viện C/C++; nhưng điều này là không bắt buộc. Hãy tham khảo tài liệu về phần phụ thuộc để xác định tên mà phần phụ thuộc đó sử dụng.

Cấu hình hệ thống xây dựng

Bạn phải bật tính năng prefab cho mô-đun Android của Gradle.

Để thực hiện việc này, hãy thêm nội dung sau vào khối android của tệp build.gradle trong mô-đun:

Kotlin

buildFeatures {
  prefab = true
}

Groovy

buildFeatures {
  prefab true
}

Bạn có thể tuỳ chọn định cấu hình một phiên bản trong tệp gradle.properties của dự án:

android.prefabVersion=2.0.0

Thông thường, phiên bản AGP mặc định được chọn sẽ phù hợp với nhu cầu của bạn. Bạn chỉ nên chọn một phiên bản khác nếu cần giải quyết lỗi, hoặc cần thêm một tính năng mới.

Các phần phụ thuộc đã nhập từ một AAR sẽ hiển thị với CMake thông qua CMAKE_FIND_ROOT_PATH. Giá trị này sẽ được Gradle thiết lập tự động khi CMake được gọi. Cho nên nếu bản dựng sửa đổi biến này, hãy đảm bảo rằng đó là nối thêm thay vì gán cho biến này.

Mỗi phần phụ thuộc hiển thị một gói tệp cấu hình đến bản dựng của bạn. Các gói này được nhập bằng lệnh find_package. Lệnh này tìm kiếm các gói tệp cấu hình khớp với tên gói và phiên bản gói đã cung cấp, cũng như hiển thị các mục tiêu sẽ được khai báo để sử dụng trong bản dựng. Ví dụ: nếu ứng dụng của bạn khai báo libapp.so và libapp.so sử dụng cURL, thì CMakeLists.txt của bạn sẽ gồm như sau:

add_library(app SHARED app.cpp)

# Add these two lines.
find_package(curl REQUIRED CONFIG)
target_link_libraries(app curl::curl)

app.cpp hiện có thể #include "curl/curl.h", libapp.so sẽ tự động được liên kết với libcurl.so khi tạo bản dựng và libcurl.so sẽ được đưa vào ứng dụng.

Phát hành thư viện gốc trong AAR

Chức năng tạo các AAR gốc lần đầu tiên được thêm vào AGP 4.1.

Để xuất các thư viện gốc, hãy thêm đoạn mã sau vào khối android của tệp build.gradle.kts trong dự án thư viện:

Kotlin

buildFeatures {
    prefabPublishing = true
}

prefab {
    create("mylibrary") {
      headers = "src/main/cpp/mylibrary/include"
    }

    create("myotherlibrary") {
        headers = "src/main/cpp/myotherlibrary/include"
    }
}

Groovy

buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
      headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}

Trong ví dụ này, thư viện mylibrarymyotherlibrary từ bản dựng gốc ndk-build hoặc CMake bên ngoài sẽ được đóng gói trong AAR do bản dựng của bạn tạo ra, mỗi thư viện sẽ xuất các tiêu đề từ thư mục được chỉ định đến các phần phụ thuộc.