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.gradlezu 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">
Durch jede Abhängigkeit wird eine Android.mk-Datei für Ihren Build verfügbar. Dies sind
mit dem Befehl import-module importiert. Mit diesem Befehl wird nach Android.mk gesucht
Dateien mit dem angegebenen Pfad in den Importverzeichnissen des Builds (wie konfiguriert
von import-add-path) und stellt die Module bereit, die zur Verwendung in Ihrem
erstellen. Wenn in Ihrer Anwendung beispielsweise libapp.so definiert und cURL verwendet wird,
Ihre Android.mk-Datei sollte Folgendes enthalten:
include $(CLEAR_VARS)
LOCAL_MODULE := libapp
LOCAL_SRC_FILES := app.cpp
LOCAL_SHARED_LIBRARIES := curl
include $(BUILD_SHARED_LIBRARY)
# If you don't need your project to build with NDKs older than r21, you can omit
# this block.
ifneq ($(call ndk-major-at-least,21),true)
$(call import-add-path,$(NDK_GRADLE_INJECTED_IMPORT_PATH))
endif
$(call import-module,prefab/curl)
Beachten Sie, dass die explizite import-add-path nur erforderlich ist, wenn vor der Verwendung von NDKs vor
an r21. Ab r21 wird NDK_GRADLE_INJECTED_IMPORT_PATH automatisch
den Importpfaden hinzugefügt.
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.