Zum Hauptinhalt springen

Wie Sie AAR-Dateien in Capacitor-Plugins verwenden

Erhalten Sie eine klare, schrittweise Anleitung, um AAR-Dateien in Capacitor-Plugins zu integrieren und Ihre Web-Anwendungen mit nativen Android-Funktionen zu erweitern.

Wie man AAR-Dateien in Capacitor-Plugins verwendet

Möchten Sie Android-Funktionen in Ihre Capacitor app? Dieses Leitfaden erklärt, wie man AAR-Dateien (Android Archive) in Capacitor plugins Um native Android-Funktionen mit cross-plattformen Web-Anwendungen zu kombinieren.

Die wichtigsten Ergebnisse:

  • Was sind AAR-Dateien? Vorinstallierte Android-Bibliotheken, die code, Ressourcen und native Dateien enthalten.
  • Warum sollten Sie sie verwenden? AAR-Dateien ermöglichen die Wiederverwendung von code, vereinfachen die Wartung und schützen geheime Funktionen.
  • Was ist erforderlich? Tools wie Android Studio, Gradle, und Node.js, sowie eine ordnungsgemäße Projektierung.
  • Wie können Sie sie integrieren? Platzieren Sie AAR-Dateien in libs, konfigurieren Sie Gradle und verbinden Sie sie mit Capacitor-Plugins.

Quick Schritte:

  1. Konfiguration einrichten: 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 das Plugin code: Link AAR-Funktionen mit JavaScript verbinden mit Capacitor’s API.
  5. Gründlich testen: Verwenden Sie Android Studios Debugger, um eine glatte Integration sicherzustellen.

Indem Sie diese Anleitung befolgen, können Sie AAR-Dateien problemlos in Ihre Capacitor-Plugins integrieren und so native Android-Funktionen für Ihre Web-Anwendungen freischalten.

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

capacitor

Entwicklungsanforderungen

Bevor Sie mit AAR-Dateien arbeiten, stellen Sie sicher, dass Ihr Entwicklungsumfeld ordnungsgemäß konfiguriert ist, um eventuelle Hürden zu vermeiden.

Benötigte 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 Erforderlich für Android-Entwicklung
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

Zusätzlich stellen Sie sicher, dass die folgenden Komponenten in Ihrem SDK Manager enthalten sind:

  • Android SDK Build-Tools 33.0.0
  • Android SDK Command-line Tools
  • SDK ist ein Platzhalter für Capacitor und sollte nicht übersetzt werden.
  • 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. Einstellungen für Android Studio konfigurieren

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-SDK-Komponenten.
  • Passen Sie Ihre System-Umgebungsvariablen mit dem korrekten Android-SDK-Pfad an.

3. Vorbereiten Sie Ihre Plugin-Struktur

Update das android/build.gradle file with these settings to include AAR file support:

android {
    compileSdkVersion 33
    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 33
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

4. Versionssicherung einrichten

Initialisiere Git in deinem Projektverzeichnis und erstelle 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, bist du bereit, mit der Hinzufügung deiner AAR-Dateien fortzufahren.

AAR-Dateien in deinem Plugin hinzufügen

AAR-Dateien erhalten

AAR-Dateien können aus dritter Hand stammende SDKs, benutzerdefinierte Bibliotheken oder Maven-Abhängigkeiten stammen. Es ist eine gute Idee, ihre Quelle, Version und Zweck in einer README Datei, die sich im libs directory.

Quelltyp Beschreibung Best Practice
Drittanbieter-SDKs Vorkompilierte Bibliotheken von Anbietern Dokumentiere die Versionsdetails des Anbieters in einer README
Benutzerdefinierte Android-Bibliotheken Selbstentwickelte Android-Module Dokumentieren Sie den Build-Prozess
Maven-Abhängigkeiten Aus remote Repositories konvertiert Speichern Sie sie lokal für Offline-Builds

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

Einstellungen für Plugin-Dateien

Ordnen Sie Ihre Plugin-Dateien, um eine glatte Integration von AAR-Abhängigkeiten zu gewährleisten. 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/**/*"
    ]
}

AAR-Datei-Platzierung

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

  • Wählen 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 dependencies.gradle Datei für andere Abhängigkeiten hinzu:
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

Halten Sie Konfigurationsdateien in vertriebsseitigen Unterordnern, um die Organisation zu erhalten und Konflikte bei der Verwendung mehrerer AAR-Abhängigkeiten zu vermeiden.

Gradle Konfigurations Schritte

Gradle Build Tool Interface

build.gradle aktualisieren

Um AAR-Dateien in Ihrem Capacitor-Plugin zu integrieren, müssen Sie Gradle entsprechend konfigurieren. Fügen Sie zunächst diese Repository-Einstellungen hinzu: android/build.gradle:

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

Fügen Sie dann 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 Projektroot und definieren Sie Ihre Bibliotheksversionen:

# Library versions
MY_LIBRARY_VERSION=1.2.3
CAPACITOR_VERSION=5.5.0

Wenn die 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'
    }
}

Synchronisiere dein Projekt, um die Änderungen anzuwenden.

Gradle Sync ausführen

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

Nach Synchronisierung überprüfen Sie bitte Folgendes:

Punkt Erwartetes Ergebnis Häufige Probleme
Ausgabe der Build-Datei Keine AAR-bezogenen Fehler Versäumte Abhängigkeiten
Library-Auflösung AAR-Dateien werden korrekt verknüpft Falsche Pfadbezeichnungen
Versionenkonflikte No Abhängigkeitsversionenprobleme Unvereinbare Versionen

Überprüfen Sie Ihre Konfiguration, wenn der Synchronisierungsversuch fehlschlägt. 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-Memoryallokation erhöhen in gradle.properties:

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

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

Verbindung von AAR-Funktionen zu Capacitor

Erstellung der Plugin-Klasse

Einmal Ihre Gradle-Dateien synchronisiert, ist es Zeit, Ihre AAR-Funktionen zu verbinden, indem Sie die (extended) Plugin Klasse. 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());
    }
}

Here’s what you need for initializing the AAR library:

Komponente Zweck __CAPGO_KEEP_0__
Context Android-App-Kontext Use getContext() aus der Plugin-Klasse
Configuration Konfiguration Optionen an das Plugin übergeben
Lifecycle Plugin-Status-Verwaltung Override load() und handleOnDestroy()

Erstellen Sie Pluginmethoden

Als nächstes definieren Sie Methoden in Ihrem Plugin mithilfe der @PluginMethod Diese Methoden verwalten 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 wird gezeigt, wie häufige Typen zwischen JavaScript und Java umgewandelt werden.

JavaScript-Typ Java-Typ Konvertierungsmethode
Objekt JS-Objekt call.getObject()
Array JSArray call.getArray()
String String call.getString()
Number Integer/Doppel call.getInt()/call.getDouble()
Boolean Boolean call.getBoolean()

Für die Ressourcenbereinigung überschreiben Sie die 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 Android Studio-Debug-Modus, um sicherzustellen, dass alles wie erwartet funktioniert.

Testen und Probleme beheben

Debuggen in Android Studio

Android Studio

Um Ihr AAR-Integration in Android Studio zu debuggen, aktivieren Sie zunächst den Debug-Modus in Ihrem Projekts build.gradle datei:

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

Setzen Sie in Ihren Plugin-Methode Haltepunkte, um den Datenfluss zu überwachen 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:

Debug-Bereich Was zu überprüfen ist Häufige Probleme
Logcat AAR-Initialisierungsmitteilungen Fehlende Berechtigungen oder falscher Kontext
Variablen Datentypumwandlungen Nullwerte oder Typmismatches
Stack-Spuren Ablauf der Methodeausführung Ungültige Methodeaufrufe oder Threading-Probleme
Speicherplatz Ressourcenverbrauch Ressourcenverwendung

Wenn die Fehlersuche nicht zum Erfolg führt, folgen Sie den Schritten zur Fehlerbehebung in der nächsten Abschnitt.

Schritte zur Fehlerbehebung

Wenn das Debuggen allein 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 mit dem Manifest-Merger

Wenn Sie Manifest-Konflikte auftreten lassen, fügen Sie die folgenden Zeilen in Ihrer AndroidManifest.xml Datei zum Übernehmen von problematischen Bibliotheken:

<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>

4. Laufzeitstörungen und Speichermanagement

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

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

Um Speicherlecks zu vermeiden, stellen Sie sicher, dass Ressourcen korrekt freigegeben werden. Verwenden Sie den Memory Profiler in Android Studio, um den Heap-Verbrauch zu überwachen und mögliche Lecks zu identifizieren.

Zusammenfassung

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

Schlüsselimplementierungsphasen

Phase Anforderungen Indikatoren für Erfolg
Entwicklungssetup Android Studio 4.0+, Gradle 7.0+ Der Build schließt ohne Fehler ab
AAR-Integration Ordnungsgemäße Dateilayout, korrekte Abhängigkeiten Keine Manifest-Konflikte
Plugin-Entwicklung Klare Pluginstruktur, genaue Methodenabdeckung Methoden werden wie erwartet ausgeführt
Testen Debug-Modus aktiv, effektives Fehlermanagement Keine Laufzeitcrashes

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

Nächste Schritte

To enhance your plugin, focus on these areas:

  • Leistungsoptimierung
    Verwenden Sie Android Studios Profiler, um die Speicherverwendung zu überwachen und sicherzustellen, dass Ressourcen ordnungsgemäß bereinigt werden.

  • Vorbereitung für die Verteilung
    Dokumentieren Sie alle AAR-Konfigurationen, generieren Sie API-Dokumentation und testen Sie die Kompatibilität mit Android API-Ebenen 29–34.

  • Wartungsstrategie
    Automate testing, manage AAR versions with version control, maintain a changelog, and set up error reporting to address production issues.

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

Weitermachen Sie von How to Use AAR Files in Capacitor Plugins

Wenn Sie verwenden Wie man AAR-Dateien in Capacitor-Plugins verwendet um native Plugin-Arbeit zu planen, verbinden Sie es mit Capgo Plugin-Verzeichnis für das Produktworkflow in Capgo Plugin Directory Capacitor Plugins von Capgo für die Implementierungsdetails in Capacitor Plugins von Capgo Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Plugins hinzufügen oder aktualisieren Ionische Unternehmensplugin-Alternativen für den Produktworkflow in Ionische Unternehmensplugin-Alternativen und Capgo Native Builds für den Produktworkflow in Capgo Native Builds.

Live-Updates für Capacitor-Apps

Wenn ein Web-Schicht-Bug live ist, schicken Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung erteilt wird. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Review-Verfahren bleiben.

Neueste von unserem Blog

Capgo gibt Ihnen die besten Einblicke, die Sie benötigen, um ein wirklich professionelles Mobiltelefon-App zu erstellen.