Menggunakan dependensi native

Dimulai dengan Plugin Android Gradle 4.0, dependensi C/C++ dapat diimpor dari AAR yang tertaut dalam file build.gradle Anda. Gradle akan secara otomatis membuatnya tersedia pada sistem build native, tetapi sistem build Anda harus dikonfigurasi untuk menggunakan library dan header yang diimpor. Karena dependensi C/C++ didistribusikan sebagai AAR, link berikut terkait AAR umum mungkin berguna:

  • Membuat Library Android untuk dokumentasi AAR umum dan cara mengintegrasikannya ke dalam project, terutama saat Anda ingin menggunakan AAR sebagai dependensi C/C++ lokal.
  • Menambahkan dependensi build untuk informasi tentang cara menambahkan dependensi ke file build.gradle, terutama untuk dependensi jarak jauh.

Dokumen ini berfokus pada cara mengonfigurasi sistem build native dan berasumsi bahwa Anda telah menambahkan AAR dependensi C/C++ ke lingkungan build Gradle project.

Dependensi native di AAR

Dependensi AAR dari modul Gradle dapat menampilkan library native untuk digunakan oleh aplikasi Anda. Di dalam AAR, direktori prefab berisi paket Prefab, yang mencakup header dan library dependensi native.

Setiap dependensi dapat menampilkan maksimal satu paket Prefab, yang terdiri dari satu atau beberapa modul. Modul Prefab adalah library tunggal, yang dapat berupa library bersama, statis, atau hanya header.

Nama paket dan modul perlu diketahui untuk menggunakan library. Berdasarkan konvensi, nama paket akan cocok dengan nama artefak Maven dan nama modul akan cocok dengan nama library C/C++, namun hal ini tidak diperlukan. Lihat dokumentasi dependensi untuk menentukan nama yang digunakan.

Konfigurasi sistem build

Fitur prefab harus diaktifkan untuk modul Android Gradle.

Untuk melakukannya, tambahkan kode berikut ke blok android file build.gradle modul:

buildFeatures {
  prefab true
}

Dependensi yang diimpor dari AAR ditampilkan ke CMake melalui CMAKE_FIND_ROOT_PATH. Nilai ini akan disetel otomatis oleh Gradle saat CMake dipanggil, jadi jika build Anda memodifikasi variabel ini, pastikan untuk menambahkan, bukan menetapkannya.

Setiap dependensi menampilkan paket file konfigurasi ke build Anda. Keduanya diimpor dengan perintah find_package. Perintah ini menelusuri beberapa paket file konfigurasi yang cocok dengan nama paket dan versi tertentu serta menampilkan target yang ditetapkannya untuk digunakan dalam build Anda. Misalnya, jika aplikasi Anda menentukan libapp.so dan menggunakan cURL, CMakeLists.txt harus menyertakan hal berikut:

add_library(app SHARED app.cpp)

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

app.cpp kini dapat #include "curl/curl.h", libapp.so akan otomatis ditautkan ke libcurl.so saat membuat, dan libcurl.so akan disertakan dalam APK.