Zum Hauptinhalt springen

Wie man AAR-Dateien in Capacitor-Plugins verwendet

Lernen Sie, wie Sie AAR-Dateien in Capacitor-Plugins integrieren können, um Ihre Web-Anwendungen mit nativen Android-Funktionen zu verbessern, indem Sie einen klaren, Schritt-für-Schritt-Leitfaden verwenden.

Martin Donadieu

Martin Donadieu

Content-Marketing-Manager

Wie man AAR-Dateien in Capacitor-Plugins verwendet

Möchten Sie Android-Funktionen in Ihre __CAPGO_KEEP_0__-Anwendungen integrieren? Capacitor app? Diese Anleitung erklärt, wie man AAR-Dateien (Android Archive) in Capacitor-Plugins verwendet, um native Android-Funktionen mit cross-plattformen Web-Anwendungen zu kombinieren.

Hauptergebnisse:

  • Was sind AAR-Dateien? Vorkompilierte Android-Bibliotheken, die code, Ressourcen und native Dateien enthalten.
  • Warum sollten sie verwendet werden? AAR-Dateien ermöglichen die code-Wiederverwendung, vereinfachen die Wartung und schützen geheime Funktionen.
  • Was ist erforderlich? Tools wie Android Studio, Gradle, und Node.js, plus eine ordnungsgemäße Projekt-Konfiguration.
  • Wie kann ich integrieren? Legen Sie AAR-Dateien in libs, konfigurieren Sie Gradle und verbinden Sie sie mit Capacitor-Plugins.

Rasche Schritte:

  1. Konfigurieren Sie Ihre Umgebung: Installieren Sie erforderliche Tools und konfigurieren Sie Android Studio.
  2. Organisieren Sie Ihr Projekt: Erstellen Sie eine klare Struktur für Ihr Capacitor Plugin.
  3. Hinzufügen von AAR-Dateien: Platzieren Sie sie in android/libs und aktualisieren Sie die Gradle-Abhängigkeiten.
  4. Schreiben Sie den Plugin code: Verbinden Sie die AAR-Funktionalität mit JavaScript mit Capacitor’s API.
  5. Sorgfältig testen: Verwenden Sie Android Studios Debugger, um eine glatte Integration sicherzustellen.

Durch das Befolgen dieser Anleitung können Sie AAR-Dateien problemlos in Ihre Capacitor-Plugins einbetten und so native Android-Funktionen für Ihre Web-Anwendungen freischalten.

Wie Sie eine Android-Bibliothek (AAR-Datei) in ein capacitor Plugin

capacitor

Anforderungen für die Entwicklungsumgebung

Bevor Sie mit AAR-Dateien arbeiten, stellen Sie sicher, dass Ihre Entwicklungsumgebung ordnungsgemäß konfiguriert ist, um eventuelle Probleme zu vermeiden.

Erforderliche Software

Hier sind die erforderlichen Software, um mit AAR-Dateien in Capacitor-Plugins zu arbeiten:

Software Mindestversion Zweck
Android Studio 2022.1.1 oder höher Haupt-IDE für Android-Entwicklung
Java Development Kit 11 oder höher Für Android-Entwicklung erforderlich
Node.js 14.0 oder höher Für die Verwaltung von Capacitor und npm-Paketen
Gradle 7.3 oder höher Androids Build-Tool
Git 2.30 oder höher Für Versionskontrolle und Paketverwaltung

Fügen Sie außerdem sicherstellen, dass die folgenden Komponenten in Ihrem SDK-Manager enthalten sind:

  • Android SDK-Plattform 33 (Android 13.0)
  • Android SDK-Build-Tools 33.0.0
  • Android SDK-Command-line-Tools
  • Android-Emulator
  • Android SDK-Plattform-Tools

Projekt-Einrichtungs-Schritte

1. Initialisieren Sie Ihre Entwicklungsumgebung

Beginnen Sie mit der Erstellung eines neuen Verzeichnisses mit dieser Struktur:

my-plugin/
├── android/
│   ├── src/
│   └── build.gradle
├── src/
│   └── definitions.ts
└── package.json

2. Konfigurieren Sie die Einstellungen von Android Studio

Starten Sie Android Studio und passen Sie die folgenden Einstellungen an:

  • Setzen Sie die Gradle JDK-Version auf 11 oder höher.
  • Aktivieren Sie die automatische Herunterladen-Funktion für Android-Komponenten SDK.
  • Aktualisieren Sie Ihre Systemumgebungsvariablen mit dem korrekten Android-Pfad SDK.

3. Vorbereiten Sie Ihre Plugin-Struktur.

Aktualisieren Sie das android/build.gradle Datei mit diesen Einstellungen, um AAR-Datei-Unterstützung zu aktivieren:

android {
    compileSdkVersion 33
    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 33
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

4. Einrichten Sie die Versionskontrolle.

Initialisieren Sie Git in Ihrem Projektverzeichnis und erstellen Sie eine .gitignore Datei, um unnötige Dateien auszuschließen. Hier ist ein Beispiel: .gitignore:

android/build/
node_modules/
dist/
*.iml
.idea/
.gradle/
local.properties

Sobald diese Schritte abgeschlossen sind, sind Sie bereit, Ihre AAR-Dateien hinzuzufügen.

Hinzufügen von AAR-Dateien zu Ihrem Plugin

Ablieferung von AAR-Dateien

AAR-Dateien können aus drittbezogenen SDKs, benutzerdefinierten Bibliotheken oder Maven-Abhängigkeiten stammen. Es ist eine gute Idee, ihre Quelle, Version und Zweck in einem README __CAPGO_KEEP_0__ libs dokumentieren.

Quellart Beschreibung Gute Praxis
Drittbezogene SDKs Vorverarbeitete Bibliotheken von Anbietern Dokumentieren Sie die Versionsdetails des Anbieters in einer README
Benutzerdefinierte Android-Bibliotheken Selbstentwickelte Android-Module Dokumentieren Sie den Build-Prozess
Maven-Abhängigkeiten Von Remote-Repositories konvertiert Lokal im Cache speichern für Offline-Builds

Sobald Ihre AAR-Dateien bereit und dokumentiert sind, können Sie Ihre Plugin konfigurieren, um sie einzubinden.

Einstellungen für Plugin-Dateien

Ordnen Sie Ihre Plugin-Dateien so an, dass die Integration von AAR-Abhängigkeiten reibungslos funktioniert. Hier ist ein Beispiel dafür, wie Ihre Plugin-Struktur aussehen könnte:

my-plugin/
├── android/
│   ├── libs/        # AAR files with README
│   ├── src/
│   └── build.gradle
├── src/
│   └── definitions.ts
└── package.json
{
    "files": [
        "android/libs/*.aar",
        "android/src/**/*",
        "src/**/*"
    ]
}

Platzierung von AAR-Dateien

Um die AAR-Funktion zu aktivieren, legen Sie die Dateien im android/libs Verzeichnis Ihres Plugins an, indem Sie diese Schritte befolgen:

  • Verwenden Sie ein klares und konsistentes Namensformat, wie z.B. libraryname-version.aar.
  • Verwalten Sie Versionen in einem versions.properties Datei. Zum Beispiel:
library1=1.2.3
library2=2.0.0
  • Hinzufügen eines dependencies.gradle Datei für andere Abhängigkeiten:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar'])
    implementation 'com.example:dependency:1.0.0'
}
  • Organisieren Sie vendor-spezifische Dateien in Unterordnern für eine bessere Verwaltung:
android/libs/
├── vendor1/
│   ├── feature.aar
│   └── config.json
└── vendor2/
    ├── module.aar
    └── settings.xml

Das Halten von Konfigurationsdateien in vendor-spezifischen Unterordnern hilft bei der Aufrechterhaltung der Ordnung und vermeidet Konflikte bei der Erstellung, wenn mit mehreren AAR-Abhängigkeiten gearbeitet wird.

Gradle KonfigurationsSchritte

Gradle Build Tool Interface

Aktualisierung von build.gradle

Um AAR-Dateien in Ihr Capacitor-Plugin zu integrieren, müssen Sie Gradle entsprechend konfigurieren. Beginnen Sie damit, diese Repository-Einstellungen hinzuzufügen zu android/build.gradle:

repositories {
    google()
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

Dann fügen Sie die AAR-Abhängigkeiten in der dependencies Block:

dependencies {
    implementation files('libs/your-library.aar')
    implementation fileTree(dir: 'libs', include: ['**/*.aar'])
    implementation "com.getcapacitor:core:${capacitorVersion}"
    implementation "androidx.appcompat:appcompat:1.6.1"
}

Für eine bessere Versionsverwaltung erstellen Sie ein gradle.properties Datei in Ihrem Projekt-Root und definieren Sie die Versionen Ihrer Bibliothek:

# Library versions
MY_LIBRARY_VERSION=1.2.3
CAPACITOR_VERSION=5.5.0

Wenn das AAR-Datei zusätzliche Abhängigkeiten enthält, deklarieren Sie sie in android/build.gradle wie folgt:

android {
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 33
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
    }
}

Nachdem Sie diese Änderungen vorgenommen haben, synchronisieren Sie Ihr Projekt, um sie anzuwenden.

Gradle Sync ausführen

Öffnen Sie Ihr Projekt in Android Studio und warten Sie, bis Gradle automatisch synchronisiert. Wenn es nicht startet, klicken Sie auf den "Projekt synchronisieren mit Gradle-Dateien"-Button in der Werkzeugleiste.

Nachdem Sie gesynchronisiert haben, überprüfen Sie Folgendes:

Überprüfen Sie den Punkt Erwartetes Ergebnis Häufige Probleme
Build-Ausgabe Keine AAR-bezogenen Fehler Fehlende Abhängigkeiten
Bibliothekserfassung AAR-Dateien werden korrekt verlinkt Falsche Pfadreferenzen
Versionen konkurrieren miteinander Keine Versionsprobleme mit Abhängigkeiten Inkompatible Versionen

Wenn der Synchronisierungsversuch fehlschlägt, überprüfen Sie bitte Ihre Konfiguration. Zum Beispiel stellen Sie sicher, dass diese Einstellungen vorliegen:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    lintOptions {
        abortOnError false
    }
}

Für große AAR-Dateien müssen Sie möglicherweise die Gradle-Memory-Allokation erhöhen in gradle.properties:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m

Sobald der Synchronisierungsprozess erfolgreich abgeschlossen ist, sollten Ihre AAR-Dateien vollständig integriert und für die Testphase bereit sein.

AAR-Funktionen mit Capacitor verbinden

Plugin-Klasse schreiben

Sobald Ihre Gradle-Dateien synchronisiert sind, ist es Zeit, Ihre AAR-Funktionen zu verbinden, indem Sie die Plugin-Klasse erweitern. Dieser Schritt verbindet JavaScript mit der nativen Android code.

@NativePlugin(
    permissions = {
        Manifest.permission.REQUIRED_PERMISSION
    }
)
public class YourPlugin extends Plugin {
    private YourAARLibrary libraryInstance;

    @Override
    public void load() {
        super.load();
        libraryInstance = new YourAARLibrary(getContext());
    }
}

Hier sind die erforderlichen Informationen für die Initialisierung der AAR-Bibliothek:

Komponente Zweck Implementierungsanmerkung
Kontext Android-App-Kontext Verwendung getContext() aus der Plugin-Klasse
Konfiguration Bibliotheks-Einstellungen Optionen vom Plugin übergeben
Lebenszyklus Verwaltung des Plugin-Zustands Überschreiben load() und handleOnDestroy()

Erstellung von Plugin-Methode

Als Nächstes definieren Sie Methoden in Ihrem Plugin mithilfe der @PluginMethod Diese Methoden handhaben den Datenaustausch zwischen JavaScript und Java.

@PluginMethod
public void performAction(PluginCall call) {
    try {
        // Get data from JavaScript
        String inputData = call.getString("inputKey");

        // Call AAR library method
        YourLibraryResult result = libraryInstance.processData(inputData);

        // Return result to JavaScript
        JSObject ret = new JSObject();
        ret.put("value", result.getValue());
        call.resolve(ret);
    } catch (Exception e) {
        call.reject("Error processing data", e);
    }
}

Für Aufgaben, die asynchron ausgeführt werden müssen:

@PluginMethod(returnType = PluginMethod.RETURN_CALLBACK)
public void startContinuousOperation(PluginCall call) {
    call.setKeepAlive(true);

    libraryInstance.setCallback(new LibraryCallback() {
        @Override
        public void onUpdate(String data) {
            JSObject ret = new JSObject();
            ret.put("data", data);
            call.resolve(ret);
        }
    });
}

Hier sind die häufigsten Typen, die zwischen JavaScript und Java umgewandelt werden:

JavaScript-Typ Java-Typ Umwandlungsmethode
Objekt JS-Objekt call.getObject()
Array JS-Array call.getArray()
Zeichenfolge Zeichenfolge call.getString()
Zahl Ganzzahl/Doppel call.getInt()/call.getDouble()
Boolesch Boolesch call.getBoolean()

Für die Ressourcenaufreinigung überschreiben Sie den handleOnDestroy Methode:

@Override
protected void handleOnDestroy() {
    if (libraryInstance != null) {
        libraryInstance.cleanup();
        libraryInstance = null;
    }
    super.handleOnDestroy();
}

Mit diesen Methoden ist Ihr Native-Bridge bereit. Testen Sie Ihre Implementierung im Debug-Modus von Android Studio, um sicherzustellen, dass alles wie erwartet funktioniert.

Testen und Beheben von Problemen

Debuggen in Android Studio

Android Studio

Um Ihr AAR-Integration in Android Studio zu debuggen, fangen Sie damit an, den Debug-Modus in Ihrem Projekts build.gradle Datei:

android {
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
        }
    }
}

Fügen Sie in Ihren Plugin-Methode Unterbrechungspunkte ein, um den Datenfluss zu verfolgen und potenzielle Probleme zu identifizieren:

@PluginMethod
public void yourMethod(PluginCall call) {
    // Set a breakpoint here to inspect input data
    String inputValue = call.getString("key");
    // Another breakpoint here to check method calls to the AAR
    libraryInstance.someMethod(inputValue);
}

Verwenden Sie das Debug-Panel in Android Studio, um wichtige Bereiche zu überwachen:

Debugbereich Was zu überprüfen ist Häufige Probleme
Logcat AAR-Initialisierungsmitteilungen Fehlende Berechtigungen oder falscher Kontext
Variablen Datenkonvertierungen Nulleinträge oder Typmismatches
Stack-Spuren Aufrufablauf der Methode Ungültige Methdaufrufe oder Synchronisationsprobleme
Speicher Ressourcenverbrauch Speicherdurchlässe

Wenn die Fehlersuche nicht die Ursache findet, folgen Sie den Schritten zur Fehlerbehebung in der nächsten Abschnitt.

Schritte zur Fehlerbehebung

Wenn die Fehlersuche alleine nicht ausreicht, verwenden Sie diese Schritte, um häufige Probleme anzugehen:

1. Abhängigkeitskonflikte

Überprüfen Sie nach Versionenkonflikten in Ihrem build.gradle Datei. Sie können spezifische Versionen zwingen, um Konflikte zu lösen:

configurations.all {
    resolutionStrategy {
        force 'com.google.android:android:4.1.1.4'
        // Add other forced versions as needed
    }
}

2. Fehlende Native Bibliotheken

Stellen Sie sicher, dass die AAR die erforderlichen .so Dateien in den entsprechenden Verzeichnissen enthält, wie z.B.:

  • jniLibs/armeabi-v7a/
  • jniLibs/arm64-v8a/
  • jniLibs/x86/
  • jniLibs/x86_64/

3. Probleme bei der Manifest-Merger-Ausführung

Wenn Sie Manifest-Konflikte begegnen, fügen Sie folgendes Ihrem Datei hinzu, um problematische Bibliotheken zu überschreiben: AndroidManifest.xml 4. Laufzeitstürze und Speichermanagement

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="your.plugin.package">
    <uses-sdk tools:overrideLibrary="conflicting.library.package"/>
</manifest>

Verwenden Sie die Leistungsoberfläche in Android Studio, um die Laufzeitstabilität zu überwachen. Für Initialisierungsprobleme behandeln Sie Ausnahmen vorsichtig:

Um Speicherverluste zu verhindern, stellen Sie sicher, dass Ressourcen ordnungsgemäß freigegeben werden. Verwenden Sie den Speichermanager in Android Studio, um den Heap-Verbrauch zu überwachen und mögliche Lecks zu identifizieren.

try {
    libraryInstance = new YourAARLibrary(getContext());
} catch (Exception e) {
    Log.e("PluginError", "Failed to initialize library: " + e.getMessage());
    return;
}

Zusammenfassung

Um AAR-Dateien in __CAPGO_KEEP_0__-Plugins zu integrieren, müssen Sie die Android-Umgebung einrichten, AAR-Dateien korrekt platzieren, Gradle genau konfigurieren und gründlich testen.

To integrate AAR files into Capacitor plugins, you’ll need to set up the Android environment, place AAR files correctly, configure Gradle accurately, and test thoroughly.

Phase

Anforderungen Indikatoren für Erfolg Entwicklungssetup
Wenn Sie Manifest-Konflikte begegnen, fügen Sie folgendes Ihrem Datei hinzu, um problematische Bibliotheken zu überschreiben:__CAPGO_KEEP_0__ Android Studio 4.0+, Gradle 7.0+ Der Build schließt ohne Fehler ab
AAR-Integration Ordnungsgemäße Dateiplatzierung, korrekte Abhängigkeiten Keine Manifest-Konflikte
Plugin-Entwicklung Klare Plugin-Struktur, genaue Methoden-Zuweisung Methoden werden wie erwartet ausgeführt
Testen Debug-Modus aktiv, effektive Fehlerbehandlung Keine Laufzeitcrashes

Sobald Sie diese Grundlagen beherrschen, können Sie sich mit fortgeschrittenen Techniken beschäftigen.

Zukünftige Schritte

Um Ihr Plugin zu verbessern, konzentrieren Sie sich auf diese Bereiche:

  • Leistungsoptimierung
    Verwenden Sie Android Studios Profiler, um den Speicherbedarf zu überwachen und sicherzustellen, dass Ressourcen ordnungsgemäß aufgeräumt werden.

  • Vorbereitung der Verteilung
    Alle AAR-Konfigurationen dokumentieren, API Dokumentation erstellen und die Kompatibilität mit Android API-Versionen 29–34 testen.

  • Wartungsstrategie
    Automatisierte Tests durchführen, AAR-Versionen mit der Versionskontrolle verwalten, einen Changelog führen und Fehlerberichte einrichten, um Produktionsprobleme anzugehen.

Wenn Sie beabsichtigen, Ihr Plugin öffentlich zu teilen, stellen Sie sicher, dass Sie detaillierte Dokumentationen zu AAR-spezifischen Einstellungen und Plattformbeschränkungen bereitstellen. Dies erleichtert es anderen Entwicklern, Ihr Plugin effektiv zu adoptieren und zu verwenden.

Fortsetzen Sie von How to Use AAR Files in Capacitor Plugins

Wenn Sie " How to Use AAR Files in Capacitor Plugins für die native Plugin-Arbeit zu planen, verbinden Sie es mit Capgo Plugin-Verzeichnis für den Produktworkflow in Capgo Plugin-Verzeichnis Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo, Hinzufügen oder Aktualisieren von Plugins für die Implementierungsdetails in Hinzufügen oder Aktualisieren von Plugins, Ionic Enterprise Plugin Alternativen für den Produktworkflow in Ionic Enterprise Plugin Alternativen, und Capgo Native Builds für den Produktworkflow in Capgo Native Builds.

Echtzeit-Updates für Capacitor-Anwendungen

Wenn ein Fehler im Web-Schicht lebt, liefern Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung vorliegt. Die Benutzer erhalten das Update im Hintergrund, während native Änderungen im normalen Review-Verfahren bleiben.

Los geht's

Neueste Nachrichten aus unserem Blog

Capgo bietet Ihnen die besten Einblicke, die Sie benötigen, um eine wirklich professionelle mobile App zu erstellen.