Aller au contenu principal

Comment utiliser les fichiers AAR dans les plugins Capacitor

Découvrez comment intégrer des fichiers AAR dans vos plugins Capacitor pour enrichir vos applications web avec des fonctionnalités Android natives grâce à ce guide étape par étape.

Comment utiliser les fichiers AAR dans les plugins Capacitor

Vous souhaitez intégrer des fonctionnalités Android à votre Capacitor app? Ce guide explique comment utiliser les fichiers AAR (Android Archive) dans Plugins Capacitor pour combiner les fonctionnalités Android natives avec vos applications web cross-platform.

Points clés :

  • Que sont les fichiers AAR ? Bibliothèques Android pré-packagées contenant code, des ressources et des fichiers natifs.
  • Pourquoi les utiliser ? Les fichiers AAR permettent de réutiliser code, simplifient la maintenance et protègent vos fonctionnalités propriétaires.
  • De quoi avez-vous besoin ? Des outils comme Android Studio, Gradle, et Node.js, ainsi qu'une configuration de projet adéquate.
  • Comment les intégrer ? Placez les fichiers AAR dans libs, configurez Gradle et connectez-les aux plugins Capacitor.

Étapes rapides :

  1. Configurez votre environnement : Installez les outils requis et configurez Android Studio.
  2. Organisez votre projet : Créez une structure claire pour votre Plugin Capacitor.
  3. Ajoutez les fichiers AAR : Placez-les dans android/libs et mettez à jour les dépendances Gradle.
  4. Écrire le plugin code : Liez les fonctionnalités AAR au JavaScript avec API de Capacitor.
  5. Tester rigoureusement : Utilisez le debugger d'Android Studio pour garantir une intégration fluide.

En suivant ce guide, vous pourrez intégrer sans friction des fichiers AAR dans vos plugins Capacitor, débloquant ainsi les capacités natives Android pour vos web apps.

Comment intégrer une bibliothèque Android (fichier AAR) dans un capacitor plugin

capacitor

Configuration requise pour le développement

Avant de manipuler des fichiers AAR, assurez-vous que votre environnement de développement est correctement configuré pour éviter tout imprévu.

Logiciels requis

Voici les logiciels nécessaires pour travailler avec des fichiers AAR dans les plugins Capacitor :

Logiciel Version minimale Finalité
Android Studio 2022.1.1 ou supérieur L'IDE principal pour le développement Android
Java Development Kit 11 ou supérieur Requis pour le développement Android
Node.js 14.0 ou supérieur Pour gérer les packages Capacitor et npm
Gradle 7.3 ou supérieur L'outil de build d'Android
Git 2.30 ou supérieur Pour le contrôle de version et la gestion de packages

De plus, assurez-vous que les composants suivants sont inclus dans votre SDK Manager :

  • Android SDK Plateforme 33 (Android 13.0)
  • Android SDK Build-Tools 33.0.0
  • Outils en ligne de commande Android SDK
  • Émulateur Android
  • Android SDK Platform-Tools

Étapes de configuration du projet

1. Initialisez votre environnement de développement

Commencez par créer un nouveau répertoire avec cette structure :

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

2. Configurer les paramètres d'Android Studio

Lancez Android Studio et ajustez les paramètres suivants :

  • Réglez le JDK Gradle sur la version 11 ou supérieure.
  • Activez le téléchargement automatique pour les composants Android SDK.
  • Mettez à jour vos variables d'environnement avec le bon chemin Android SDK.

3. Préparez la structure de votre plugin

Mettez à jour le android/build.gradle fichier avec ces paramètres pour inclure le support des fichiers AAR :

android {
    compileSdkVersion 33
    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 33
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

4. Configurer le contrôle de version

Initialisez Git dans le répertoire de votre projet et créez un .gitignore fichier pour exclure les fichiers inutiles. Voici un exemple de .gitignore:

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

Une fois ces étapes terminées, vous pourrez passer à l'ajout de vos fichiers AAR.

Ajouter des fichiers AAR à votre plugin

Obtenir des fichiers AAR

Les fichiers AAR peuvent provenir de SDK tiers, de bibliothèques personnalisées ou de dépendances Maven. Il est conseillé de documenter leur source, leur version et leur utilité dans un README fichier situé dans le répertoire libs .

Type de source Description Bonne pratique
Third-party SDKs Bibliothèques pré-compilées de fournisseurs Documenter les versions des fournisseurs dans un README
Bibliothèques Android personnalisées Modules Android développés en interne Documenter le processus de build
Dépendances Maven Converties depuis des dépôts distants Mise en cache locale pour les builds hors ligne

Une fois vos fichiers AAR prêts et documentés, vous pouvez configurer votre plugin pour les inclure.

Configuration des fichiers du plugin

Organisez les fichiers de votre plugin pour garantir une intégration fluide des dépendances AAR. Voici un exemple de la structure de votre plugin :

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

Emplacement des fichiers AAR

Pour activer la fonctionnalité AAR, placez les fichiers dans le dossier android/libs de votre plugin en suivant ces étapes :

  • Utilisez un format de nommage clair et cohérent, tel que libraryname-version.aar.
  • Gérez les versions dans un fichier versions.properties Par exemple :
library1=1.2.3
library2=2.0.0
  • Ajoutez une dependencies.gradle fichier pour les autres dépendances :
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar'])
    implementation 'com.example:dependency:1.0.0'
}
  • Organisez les fichiers spécifiques aux fournisseurs dans des sous-répertoires pour une meilleure gestion :
android/libs/
├── vendor1/
│   ├── feature.aar
│   └── config.json
└── vendor2/
    ├── module.aar
    └── settings.xml

Conserver les fichiers de configuration dans des sous-répertoires spécifiques permet de maintenir l'organisation et d'éviter les conflits de build lors de l'utilisation de plusieurs dépendances AAR.

Gradle Étapes de configuration

Interface de l'outil de build Gradle

Mise à jour de build.gradle

Pour intégrer des fichiers AAR dans votre plugin Capacitor, vous devez configurer Gradle correctement. Commencez par ajouter ces paramètres de dépôt dans android/build.gradle:

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

Ensuite, incluez les dépendances AAR dans le bloc dependencies :

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

Pour une meilleure gestion des versions, créez un fichier gradle.properties à la racine de votre projet et définissez vos versions de librairies :

# Library versions
MY_LIBRARY_VERSION=1.2.3
CAPACITOR_VERSION=5.5.0

Si le fichier AAR inclut des dépendances supplémentaires, déclarez-les dans android/build.gradle comme ceci :

android {
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 33
    }

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

Une fois ces modifications effectuées, synchronisez votre projet pour les appliquer.

Exécution de la synchronisation Gradle

Ouvrez votre projet dans Android Studio et attendez que Gradle se synchronise automatiquement. Si cela ne démarre pas, cliquez sur le bouton « Sync Project with Gradle Files » dans la barre d'outils.

After syncing, verify the following:

Point de contrôle Résultat attendu Problèmes courants
Sortie du build Aucune erreur liée aux fichiers AAR Dépendances manquantes
Résolution de la bibliothèque Fichiers AAR correctement liés Références de chemin incorrectes
Conflits de version Aucun problème de version de dépendance Versions incompatibles

Si la synchronisation échoue, vérifiez votre configuration. Assurez-vous, par exemple, que ces paramètres sont appliqués :

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

    lintOptions {
        abortOnError false
    }
}

Pour les fichiers AAR volumineux, vous devrez peut-être augmenter l'allocation mémoire de Gradle dans gradle.properties:

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

Une fois la synchronisation réussie, vos fichiers AAR devraient être pleinement intégrés et prêts pour les tests.

Connecter les fonctionnalités AAR à Capacitor

Écriture de la classe du plugin

Une fois vos fichiers Gradle synchronisés, il est temps de connecter vos fonctionnalités AAR en étendant la Plugin class. Cette étape lie le JavaScript au code natif d'Android.

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

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

Voici ce dont vous avez besoin pour initialiser la bibliothèque AAR :

Composant Finalité Note d'implémentation
Contexte Contexte de l'application Android Utilisez getContext() depuis la classe Plugin
Configuration Paramètres de la bibliothèque Passer les options depuis le plugin
Cycle de vie Gestion de l'état du plugin Remplacer load() et handleOnDestroy()

Création de méthodes de plugin

Ensuite, définissez les méthodes de votre plugin en utilisant le @PluginMethod Ces méthodes gèrent l'échange de données entre JavaScript et 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);
    }
}

Pour les tâches nécessitant une exécution asynchrone :

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

Voici comment les types courants sont convertis entre JavaScript et Java :

Type JavaScript Type Java Méthode de conversion
Object JSObject call.getObject()
Array JSArray call.getArray()
String String call.getString()
Number Entier/Double call.getInt()/call.getDouble()
Boolean Boolean call.getBoolean()

Pour nettoyer les ressources, surchargez la méthode handleOnDestroy :

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

Grâce à ces méthodes, votre bridge natif est prêt. Testez votre implémentation dans l'environnement de debug d'Android Studio pour vérifier que tout fonctionne comme prévu.

Tests et résolution de problèmes

Débogage dans Android Studio

Android Studio

Pour déboguer votre intégration AAR dans Android Studio, commencez par activer le mode debug dans le build.gradle fichier :

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

Ajoutez des points d'arrêt dans les méthodes de votre plugin pour suivre le flux de données et identifier d'éventuels problèmes :

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

Utilisez le panneau Debug d'Android Studio pour surveiller les points clés :

Zone de débogage Quoi vérifier Problèmes courants
Logcat Messages d'initialisation AAR Permissions manquantes ou contexte incorrect
Variables Conversions de types de données Valeurs nulles ou incompatibilité de types
Stack Trace Flux d'exécution des méthodes Appels de méthodes invalides ou problèmes de threading
Mémoire Utilisation des ressources Fuites de mémoire

Si le débogage ne résout pas le problème, suivez les étapes de dépannage de la section suivante.

Étapes de dépannage

Quand le débogage seul ne suffit pas, suivez ces étapes pour résoudre les problèmes courants :

1. Conflits de dépendances

Vérifiez les conflits de version dans votre build.gradle fichier. Vous pouvez forcer des versions spécifiques pour résoudre les conflits :

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

2. Bibliothèques natives manquantes

Assurez-vous que l'AAR inclut les .so fichiers requis dans les répertoires appropriés, tels que :

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

3. Problèmes de fusion de manifest

Si vous rencontrez des conflits de manifest, incluez ceci dans votre AndroidManifest.xml fichier pour remplacer les bibliothèques problématiques :

<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. Crashs au runtime et gestion de la mémoire

Utilisez l'onglet Performance d'Android Studio pour surveiller la stabilité au runtime. Pour les problèmes d'initialisation, gérez les exceptions avec soin :

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

Pour éviter les fuites de mémoire, assurez-vous que les ressources sont correctement libérées. Utilisez le Memory Profiler d'Android Studio pour suivre l'utilisation du heap et identifier les fuites.

Résumé

Pour intégrer des fichiers AAR dans les plugins Capacitor, vous devrez configurer l'environnement Android, placer les fichiers AAR au bon endroit, configurer Gradle avec précision et tester minutieusement.

Phases clés de l'implémentation

Phase Prérequis Indicateurs de succès
Configuration de développement Android Studio 4.0+, Gradle 7.0+ Le build se termine sans erreur
Intégration AAR Placement correct des fichiers, dépendances correctes Aucun conflit de manifeste
Développement de plugins Structure de plugin claire, mapping des méthodes précis Les méthodes s'exécutent comme prévu
Tests Mode debug actif, gestion d'erreurs efficace Aucun crash au runtime

Une fois ces bases maîtrisées, vous pourrez explorer des techniques plus avancées.

Étapes suivantes

Pour améliorer votre plugin, concentrez-vous sur ces points :

  • Optimisation des performances
    Utilisez le profiler d'Android Studio pour surveiller l'usage mémoire et garantir un nettoyage correct des ressources.

  • Préparation de la distribution
    Documentez toutes les configurations AAR, générez la documentation API et testez la compatibilité avec les niveaux API Android 29–34.

  • Stratégie de maintenance
    Automatisez vos tests, gérez les versions d'AAR avec le version control, maintenez un changelog et configurez le reporting d'erreurs pour résoudre les problèmes en production.

Si vous prévoyez de rendre votre plugin public, pensez à fournir une documentation détaillée sur les configurations AAR spécifiques et les limites de la plateforme. Les autres développeurs pourront ainsi adopter et utiliser votre plugin plus facilement.

Continuer avec Comment utiliser les fichiers AAR dans les plugins Capacitor

Si vous utilisez Comment utiliser les fichiers AAR dans les plugins Capacitor pour planifier le travail sur un plugin natif, connectez-l’à Répertoire des plugins Capgo pour le workflow produit dans le répertoire des plugins Capgo, Plugins Capacitor par Capgo pour les détails d'implémentation dans les plugins Capacitor par Capgo, Ajouter ou mettre à jour des plugins pour les détails d'implémentation dans Adding or Updating Plugins, Alternatives aux plugins Ionic Enterprise pour le workflow produit dans les alternatives aux plugins Ionic Enterprise, et Capgo Native Build pour le workflow produit dans les Capgo Native Builds.

Live updates pour les apps Capacitor

Quand un bug de la couche web est en production, déployez le correctif via Capgo au lieu d'attendre des jours l'approbation des stores. Les utilisateurs reçoivent la mise à jour en arrière-plan, tandis que les changements natifs suivent le circuit de validation habituel.

Les derniers articles du blog

Capgo vous apporte les meilleures informations pour créer une application mobile vraiment professionnelle.