Biblioteki AAR mogą zawierać natywne zależności, z których może korzystać wtyczka Androida do obsługi Gradle. AGP może też generować raporty AAR, które udostępniają biblioteki natywne użytkownikom.
Korzystanie z zależności natywnych
Od wtyczki Androida do obsługi Gradle w wersji 4.0 możesz importować zależności C/C++ z usług AAR, do których linki znajdują się w pliku build.gradle
. Gradle automatycznie udostępni je w natywnym systemie kompilacji, ale musisz go skonfigurować tak, aby mógł korzystać z zaimportowanych bibliotek i nagłówków. Ponieważ zależności C/C++ są rozpowszechniane jako AAR, pomocne mogą się okazać te linki dotyczące ogólnych informacji o AR:
- utworzyć bibliotekę Androida do ogólnej dokumentacji AAR i dowiedzieć się, jak zintegrować ją z projektem, zwłaszcza jeśli chcesz używać AAR jako lokalnej zależność w C/C++;
- Dodaj zależności kompilacji, aby uzyskać informacje o dodawaniu zależności do pliku
build.gradle
, zwłaszcza w zakresie zależności zdalnych.
Ten dokument dotyczy sposobu konfigurowania natywnego systemu kompilacji i zakładamy, że masz już dodany AAR zależności C/C++ do środowiska kompilacji Gradle projektu.
Natywne zależności w AAR
Zależności AAR modułów Gradle mogą udostępnić biblioteki natywne do użycia przez aplikację. W AAR katalog prefab
zawiera pakiet Prefab z nagłówkami i bibliotekami zależności natywnej.
Każda zależność może ujawniać maksymalnie 1 pakiet Prefab, który składa się z 1 lub większej liczby modułów. Moduł Prefab to pojedyncza biblioteka, która może być biblioteką współdzieloną, statyczną lub biblioteką tylko z nagłówkiem.
Aby można było korzystać z bibliotek, nazwy pakietów i modułów muszą być znane. Zgodnie z konwencją nazwa pakietu będzie zgodna z nazwą artefaktu Maven, a nazwa modułu będzie zgodna z nazwą biblioteki C/C++, ale nie jest to wymagane. Informacje o tym, jakie nazwy są używane, znajdziesz w dokumentacji zależności.
Utwórz konfigurację systemu
W module Androida Gradle musi być włączona funkcja prefab
.
Aby to zrobić, dodaj ten fragment do bloku android
w pliku build.gradle
modułu:
Kotlin
buildFeatures { prefab = true }
Odlotowy
buildFeatures { prefab true }
Opcjonalnie skonfiguruj wersję w pliku gradle.properties
projektu:
android.prefabVersion=2.0.0
Zwykle wybrana wersja domyślna aplikacji AGP będzie odpowiadać Twoim potrzebom. Różną wersję należy wybierać tylko wtedy, gdy występuje błąd, który trzeba naprawić, lub potrzebna jest nowa funkcja.
Zależności zaimportowane z AAR są udostępniane w CMake przez CCREATE_FIND_ROOT_PATH. Ta wartość jest ustawiana automatycznie przez Gradle po wywołaniu CMake, więc jeśli kompilacja modyfikuje tę zmienną, pamiętaj, aby ją dołączyć, a nie przypisać do niej.
Każda zależność ujawnia w Twojej kompilacji pakiet config-file. Są one importowane za pomocą polecenia find_package. To polecenie wyszukuje pakiety plików konfiguracyjnych pasujące do podanej nazwy i wersji pakietu oraz udostępnia zdefiniowane przez niego miejsca docelowe do użycia w kompilacji. Jeśli na przykład aplikacja definiuje właściwość libapp.so
i używa ona cURL, CMakeLists.txt
powinien zawierać ten kod:
add_library(app SHARED app.cpp)
# Add these two lines.
find_package(curl REQUIRED CONFIG)
target_link_libraries(app curl::curl)
app.cpp
może teraz mieć: #include "curl/curl.h"
, libapp.so
będzie automatycznie połączony z libcurl.so
podczas tworzenia, a libcurl.so
zostanie uwzględniony w aplikacji.
Publikowanie bibliotek natywnych w AAR
Możliwość tworzenia natywnych AAR została po raz pierwszy dodana w AGP 4.1.
Aby wyeksportować biblioteki natywne, dodaj ten fragment do bloku android
w pliku build.gradle.kts
projektu biblioteki:
Kotlin
buildFeatures { prefabPublishing = true } prefab { create("mylibrary") { headers = "src/main/cpp/mylibrary/include" } create("myotherlibrary") { headers = "src/main/cpp/myotherlibrary/include" } }
Odlotowy
buildFeatures { prefabPublishing true } prefab { mylibrary { headers "src/main/cpp/mylibrary/include" } myotherlibrary { headers "src/main/cpp/myotherlibrary/include" } }
W tym przykładzie biblioteki mylibrary
i myotherlibrary
z zewnętrznej kompilacji natywnej CMake zostaną spakowane do pliku AAR utworzonego przez kompilację i każdy z nich wyeksportuje nagłówki ze wskazanego katalogu do swoich katalogów zależnych.