Saltare al contenuto principale

Come utilizzare i file AAR nei plugin Capacitor

Scopri come integrare i file AAR nei plugin Capacitor per migliorare le tue app web con funzionalità native Android attraverso una guida passo dopo passo chiara.

Martin Donadieu

Martin Donadieu

Responsabile di contenuti

Come utilizzare i file AAR nei plugin Capacitor

Vuoi integrare funzionalità Android nel tuo Capacitor app? Questa guida spiega come utilizzare i file AAR (Archivio Android) in Capacitor plugin per combinare la funzionalità nativa Android con le app web cross-platform.

Punti chiave:

  • Cosa sono i file AAR? Biblioteche Android preconfezionate contenenti code, risorse e file nativi.
  • Perché usarli? I file AAR consentono il code di riutilizzo, semplificano la manutenzione e proteggono le funzionalità proprietarie.
  • Cosa è richiesto? Strumenti come Android Studio, Gradle, e Node.js, più una configurazione del progetto corretta.
  • Come integrare? Colloca i file AAR in libs, configura Gradle e collega loro i plugin Capacitor.

Passaggi Veloci:

  1. Configura il tuo ambiente: Installa gli strumenti richiesti e configura Android Studio.
  2. Organizza il tuo progetto: Crea una struttura chiara per il tuo Capacitor plugin.
  3. Aggiungi file AAR: Collocali in android/libs e aggiorna le dipendenze di Gradle.
  4. Scrivi plugin code: Collega la funzionalità AAR al JavaScript con Capacitor’s API.
  5. Testa accuratamente: Utilizza il debugger di Android Studio per assicurare un'integrazione liscia.

Seguendo questa guida, puoi incorporare facilmente i file AAR nei tuoi plugin Capacitor, sbloccando le capacità Android native per le tue app web.

Come embeddare una libreria Android (file AAR) in un capacitor plugin

capacitor

Requisiti di configurazione per l'ambiente di sviluppo

Prima di lavorare con i file AAR, assicurati di avere un ambiente di sviluppo configurato correttamente per evitare problemi.

Software richiesto

Ecco lo software che avrai bisogno per lavorare con i file AAR nei plugin di Capacitor:

SoftwareVersione minimaScopo
Android Studio2022.1.1 o superioreL'IDE principale per lo sviluppo di Android
Kit di sviluppo Java11 o superioreRichiesto per lo sviluppo di Android
Node.js14.0 o superiorePer gestire i pacchetti Capacitor e npm
Gradle7.3 o superioreStrumento di costruzione di Android
Git2.30 o superiorePer il controllo delle versioni e la gestione dei pacchetti

Inoltre, assicurati di includere i seguenti componenti nel tuo SDK Manager:

  • Piattaforma Android SDK 33 (Android 13.0)
  • Strumenti di costruzione Android SDK 33.0.0
  • Strumenti di riga di comando Android SDK
  • Emulatore Android
  • Strumenti di piattaforma Android SDK

Passaggi di configurazione del progetto

1. Inizia configurando il tuo ambiente di sviluppo

Inizia creando un nuovo directory con la seguente struttura:

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

2. Configura le impostazioni di Android Studio

Avvia Android Studio e regola le seguenti impostazioni:

  • Imposta il JDK di Gradle alla versione 11 o superiore.
  • Abilita la funzione di download automatico per i componenti Android SDK.
  • Aggiorna le variabili di ambiente del sistema con il percorso Android SDK corretto.

3. Preparare la struttura del tuo plugin

Aggiorna il android/build.gradle file con questi impostazioni per includere il supporto per i file AAR:

android {
    compileSdkVersion 33
    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 33
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

4. Configurare il Controllo delle Versioni

Inizializza Git nel tuo directory di progetto e crea un .gitignore file per escludere file non necessari. Ecco un esempio .gitignore:

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

Una volta completate queste fasi, sarai pronto a passare all'aggiunta dei tuoi file AAR.

Aggiungere File AAR al tuo Plugin

Ottenere File AAR

I file AAR possono provenire da SDK di terze parti, librerie personalizzate o dipendenze Maven. È una buona idea documentare la loro origine, versione e scopo in un README file ubicato nella libs directory.

Tipo di SorgenteDescrizionePratica Raccomandata
Sistemi di sviluppo terziLibrerie precompilate dai fornitoriDocumentare i dettagli della versione del fornitore in un README
Librerie Android personalizzateModuli Android sviluppati in-houseDocumentare il processo di compilazione
Dipendenze MavenConvertito dai repository remotiCaching localmente per costruire offline

Una volta pronte e documentate le tue file AAR, puoi configurare il tuo plugin per includerle.

Configurazione dei file del plugin

Organizza i tuoi file del plugin per garantire un'integrazione liscia delle dipendenze AAR. Ecco un esempio di come la struttura del tuo plugin potrebbe essere:

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

Posizionamento dei file AAR

Per abilitare la funzionalità AAR, posiziona i file nella android/libs directory del tuo plugin seguendo questi passaggi:

  • Utilizza un formato di denominazione chiaro e coerente, come libraryname-version.aar.
  • Gestisci le versioni in un versions.properties file. Ad esempio:
library1=1.2.3
library2=2.0.0
  • Aggiungi un dependencies.gradle file per altre dipendenze:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar'])
    implementation 'com.example:dependency:1.0.0'
}
  • Organizza i file specifici per vendor in sottodirectory per una gestione migliore:
android/libs/
├── vendor1/
│   ├── feature.aar
│   └── config.json
└── vendor2/
    ├── module.aar
    └── settings.xml

Mantieni i file di configurazione nelle sottodirectory specifiche per il vendor per mantenere l'organizzazione e evitare conflitti di costruzione quando lavori con più dipendenze AAR:

Gradle Passaggi di configurazione

Gradle Build Tool Interface

Aggiornamento di build.gradle

Per integrare i file AAR nel tuo plugin Capacitor, hai bisogno di configurare Gradle in modo appropriato. Inizia aggiungendo questi impostazioni di repository a android/build.gradle:

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

Poi, includi le dipendenze AAR nel dependencies blocco:

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

Per una gestione delle versioni migliore, crea un gradle.properties file nella radice del tuo progetto e definisci le tue versioni di libreria:

# Library versions
MY_LIBRARY_VERSION=1.2.3
CAPACITOR_VERSION=5.5.0

Se il file AAR viene fornito con dipendenze aggiuntive, dichiararle in android/build.gradle come segue:

android {
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 33
    }

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

Una volta apportate queste modifiche, sincronizza il tuo progetto per applicarle.

Esecuzione di Sync Gradle

Apri il tuo progetto in Android Studio e attendi che Gradle sincronizzi automaticamente. Se non inizia, clicca sul pulsante "Sincronizza progetto con file Gradle" nella barra degli strumenti.

Dopo aver sincronizzato, verifica i seguenti punti:

Punto di controlloRisultato previstoProblemi comuni
Output di costruzioneAssenza di errori correlati al file AARDipendenze mancanti
Risoluzione della LibreriaI file AAR sono stati collegati correttamenteRiferimenti di percorso non corretti
Conflitti di VersioneNessun problema di versione di dipendenzaVersioni incompatibili

Se il sincronizzazione fallisce, controlla nuovamente la tua configurazione. Ad esempio, assicurati che questi impostazioni siano presenti:

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

    lintOptions {
        abortOnError false
    }
}

Per grandi file AAR, potresti dover aumentare l'allocazione di memoria di Gradle in gradle.properties:

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

Una volta completata con successo la sincronizzazione, i tuoi file AAR dovrebbero essere completamente integrati e pronti per le prove.

Collegamento delle Funzionalità AAR a Capacitor

Scrittura della Classe del Plugin

Una volta sincronizzati i file Gradle, è il momento di collegare la tua funzionalità AAR estendendo Plugin classe. Questo passo collega JavaScript al nativo 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());
    }
}

Ecco cosa serve per inizializzare la libreria AAR:

ComponenteScopoNota di implementazione
ContestoContexto dell'app AndroidUtilizzo getContext() dalla classe Plugin
ConfigurazioneImpostazioni della libreriaPassare opzioni dal plugin
Ciclo di vitaGestione dello stato del pluginSovrascrivere load() e handleOnDestroy()

Creazione di metodi del plugin

Successivamente, definisci metodi nel tuo plugin utilizzando l'annotazione. Questi metodi gestiscono l'interscambio di dati tra JavaScript e Java. @PluginMethod Per le attività che richiedono l'esecuzione in modo asincrono:

@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);
    }
}

Ecco come sono convertiti i tipi comuni tra JavaScript e Java:

@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);
        }
    });
}

Tipo JavaScript

Tipo JavaEcco come sono convertiti i tipi comuni tra JavaScript e Java:__CAPGO_KEEP_0__Metodo di conversione
OggettoJSObjectcall.getObject()
ArrayJSArraycall.getArray()
StringaStringacall.getString()
NumeroIntero/Doppiocall.getInt()/call.getDouble()
BooleanoBooleanocall.getBoolean()

Esegui il recupero delle risorse sovrascrivendo il handleOnDestroy metodo:

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

Con questi metodi in atto, il tuo ponte nativo è pronto. Testa la tua implementazione nell'ambiente di debug di Android Studio per assicurarti che tutto funzioni come previsto.

Test e Risoluzione dei Problemi

Debugging in Android Studio

Android Studio

Per debuggare l'integrazione AAR in Android Studio, inizia abilitando il debug nel progetto: build.gradle file:

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

Aggiungi breakpoint nei metodi del tuo plugin per tracciare il flusso dei dati e identificare potenziali problemi:

@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);
}

Utilizza il pannello Debug di Android Studio per monitorare le aree chiave:

Area di DebuggingCosa ControllareProblemi comuni
LogcatMessaggi di inizializzazione AARMancanza di autorizzazioni o contesto errato
VariabiliConversioni di tipo di datiValori nulli o incongruenze di tipo
Traccia della pilaFlusso di esecuzione del metodoChiamate di metodo non valide o problemi di thread
MemoriaUtilizzo delle risorseMemorie perdute

Se la debug non risolve il problema, segui i passaggi di risoluzione dei problemi nella sezione successiva.

Passaggi di Risoluzione dei Problemi

Quando la sola debug non è sufficiente, utilizza questi passaggi per risolvere i problemi comuni:

1. Conflitti di Dipendenze

Controlla i conflitti di versione nei tuoi build.gradle __CAPGO_KEEP_0__

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

2. Librerie Native Manenti

Assicurati che il file AAR includa i file richiesti nei directory appropriati, come: .so 3. Problemi di Fusione del Manifesto

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

Se incontri conflitti di manifesto, includi i seguenti nel tuo

3. Problemi di Fusione del Manifesto: se incontri conflitti di manifesto, includi i seguenti nel tuo AndroidManifest.xml file per sovrascrivere librerie problematiche:

<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. Crisi di Esecuzione e Gestione della Memoria

Utilizza la scheda Performance in Android Studio per monitorare la stabilità di esecuzione. Per problemi di inizializzazione, gestisci le eccezioni con cura:

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

Per prevenire le perdite di memoria, assicurati che le risorse vengano rilasciate correttamente. Utilizza il Profilo della Memoria in Android Studio per tracciare l'uso della memoria e identificare eventuali perdite.

Riepilogo

Per integrare i file AAR nei plugin di Capacitor è necessario configurare l'ambiente Android, posizionare i file AAR correttamente, configurare Gradle con precisione e testare accuratamente.

Fasi di Implementazione Chiave

FaseRequisitiIndicativi di Successo
Configurazione di SviluppoAndroid Studio 4.0+, Gradle 7.0+Il completamento del build avviene senza errori
Integrazione AARPosizionamento dei file corretto, dipendenze corretteNessun conflitto di manifesto
Sviluppo di pluginStruttura di plugin chiara, mapping dei metodi precisoI metodi eseguiscono come previsto
TestModalità debug attiva, gestione degli errori efficaceNessun crash in esecuzione

Una volta padroneggiati questi concetti base, potrai esplorare tecniche più avanzate.

Passaggi successivi

Per migliorare il tuo plugin, concentrati su queste aree:

  • Ottimizzazione della Prestazione
    Utilizza il profiler di Android Studio per monitorare l'uso della memoria e assicurarti che le risorse vengano pulite correttamente.

  • Preparazione della Distribuzione
    Documenta tutte le configurazioni AAR, genera API documentazione e testa la compatibilità con i livelli Android API 29–34.

  • Strategia di Manutenzione
    Automatizza i test, gestisci le versioni AAR con il controllo delle versioni, mantiene un changelog e configura il reporting degli errori per affrontare le problematiche di produzione.

Se hai l'intenzione di condividere il tuo plugin pubblicamente, assicurati di fornire una documentazione dettagliata sulle impostazioni AAR specifiche e su eventuali limitazioni di piattaforma. Ciò renderà più facile per gli altri sviluppatori adottare e utilizzare il tuo plugin in modo efficace.

Aggiornamenti in tempo reale per le app Capacitor

Quando un bug nel layer web è attivo, invia la correzione attraverso Capgo invece di attendere giorni per l'approvazione della store. Gli utenti ricevono l'aggiornamento in background mentre le modifiche native rimangono nel normale percorso di revisione.

Inizia subito

Ultimi articoli dal nostro Blog

Capgo ti offre le migliori informazioni che ti servono per creare un'app mobile veramente professionale.