AAR-Bibliotheken können native Abhängigkeiten enthalten, die das Android-Gradle-Plug-in nutzen kann. verbrauchen. AGP kann auch AAE erstellen, die native Bibliotheken für ihre Kunden.
Native Abhängigkeiten verwenden
Ab Android-Gradle-Plug-in 4.0 können C/C++-Abhängigkeiten aus
AAE sind in Ihrer build.gradle
-Datei verknüpft. Gradle wird diese
für das native Build-System verfügbar, aber das Build-System muss konfiguriert sein
um die importierten Bibliotheken und Header zu nutzen. Da C/C++-Abhängigkeiten
die als automatisch angewendete Empfehlungen vertrieben werden, könnten die folgenden Links zu allgemeinen automatisch angewendeten Empfehlungen hilfreich sein:
- Erstellen einer Android-Bibliothek für die generische Dokumentation zu automatisch angewendeten Empfehlungen und wie Sie es in Ihr Projekt integrieren, AAR als lokale C/C++-Abhängigkeit verwenden.
- Fügen Sie Build-Abhängigkeiten hinzu, um Informationen zum Hinzufügen von Abhängigkeiten zur Datei
build.gradle
zu erhalten. insbesondere bei Remote-Abhängigkeiten.
In diesem Dokument erfahren Sie, wie Sie Ihr natives Build-System konfigurieren. Es wird davon ausgegangen, dass Sie Wir haben der Gradle-Build-Umgebung Ihres Projekts eine C/C++-Abhängigkeit von AAR hinzugefügt.
Native Abhängigkeiten in AAE
AAR-Abhängigkeiten Ihrer Gradle-Module können native Bibliotheken zur Verwendung durch
Ihre Anwendung. Im AAE enthält das Verzeichnis prefab
eine Prefab-Datei.
-Paket, das die Header und Bibliotheken der nativen Abhängigkeit enthält.
Jede Abhängigkeit kann höchstens ein Prefab-Paket bereitstellen, das ein oder weitere Module. Ein Prefab-Modul ist eine einzelne Bibliothek, die entweder freigegebene, statische oder reine Header-Bibliothek.
Die Paket- und Modulnamen müssen bekannt sein, damit die Bibliotheken verwendet werden können. Von Konvention entspricht der Paketname dem Maven-Artefaktnamen und dem Modul Name mit dem Namen der C/C++-Bibliothek übereinstimmt, dies ist jedoch nicht erforderlich. Informationen hierzu finden Sie in der der Abhängigkeitsdokumentation, um zu ermitteln, welche Namen verwendet werden.
Systemkonfiguration erstellen
<ph type="x-smartling-placeholder">
Die Funktion prefab
muss für das Android-Gradle-Modul aktiviert sein.
Fügen Sie dazu Folgendes in den android
-Block des Moduls
build.gradle
-Datei:
Kotlin
buildFeatures { prefab = true }
Cool
buildFeatures { prefab true }
Konfigurieren Sie optional eine Version
in der Datei gradle.properties
Ihres Projekts:
android.prefabVersion=2.0.0
In der Regel entspricht die Standardversion AGP Ihren Anforderungen. Sie sollten nur eine andere Version auswählen, wenn Sie einen Fehler beheben müssen oder eine neue Funktion nach Ihren Vorstellungen.
<ph type="x-smartling-placeholder">
Aus einem AAR importierte Abhängigkeiten werden in CMake über CMAKE_FIND_ROOT_PATH Dieser Wert wird automatisch von Gradle festgelegt, wenn CMake wird aufgerufen. Wenn Ihr Build diese Variable ändert, müssen Sie also anstatt ihr zuzuweisen.
Durch jede Abhängigkeit wird ein config-file-Paket für Ihren Build verfügbar gemacht. Dies sind
mit dem Befehl find_package importiert. Dieser Befehl sucht nach „config-file“
Pakete, die dem angegebenen Paketnamen und der angegebenen Version entsprechen, und die entsprechenden Ziele verfügbar machen
definiert, was in Ihrem Build verwendet werden soll. Wenn in Ihrer App beispielsweise
libapp.so
und cURL verwendet wird, sollte CMakeLists.txt
Folgendes enthalten:
add_library(app SHARED app.cpp)
# Add these two lines.
find_package(curl REQUIRED CONFIG)
target_link_libraries(app curl::curl)
app.cpp
kann jetzt #include "curl/curl.h"
, libapp.so
ist dann
beim Erstellen automatisch mit libcurl.so
verknüpft und libcurl.so
wird
in die App eingebunden werden.
Native Bibliotheken in automatisch angewendeten Empfehlungen veröffentlichen
Die Möglichkeit, native automatisch angewendete Empfehlungen zu erstellen, wurde erstmals in AGP 4.1 hinzugefügt.
Fügen Sie zum Exportieren Ihrer nativen Bibliotheken Folgendes in den android
-Block von
in der Datei build.gradle.kts
Ihres Bibliotheksprojekts:
Kotlin
buildFeatures { prefabPublishing = true } prefab { create("mylibrary") { headers = "src/main/cpp/mylibrary/include" } create("myotherlibrary") { headers = "src/main/cpp/myotherlibrary/include" } }
Cool
buildFeatures { prefabPublishing true } prefab { mylibrary { headers "src/main/cpp/mylibrary/include" } myotherlibrary { headers "src/main/cpp/myotherlibrary/include" } }
In diesem Beispiel haben die Bibliotheken mylibrary
und myotherlibrary
aus Ihrem
Der externe native Build „ndk-build“ oder „CMake“ wird in das AAR gepackt, das von
Ihr Build und jeder exportiert die Header aus dem angegebenen Verzeichnis nach
für ihre abhängigen
Rechtssubjekte.