Aller directement au contenu principal

Comment ajouter des dépendances dans les plugins Capacitor

Apprenez à gérer les dépendances de manière fluide dans les plugins Capacitor sur plusieurs plateformes avec des étapes pratiques et des meilleures pratiques.

Martin Donadieu

Martin Donadieu

Spécialiste du contenu

Comment ajouter des dépendances dans les plugins Capacitor

L'ajout de dépendances aux Capacitor plugins peut sembler débordant, mais il est plus facile lorsqu'il est divisé en étapes claires. Voici ce dont vous avez besoin de savoir :

  1. Comprenez les outils:

  2. Node.js:

  3. Ajoutez les dépendances JavaScript Capacitor plugin project:

    • Mettez à jour pour inclure les dépendances de pair comme npm init @capacitor/plugin Utilisez pour les dépendances de production et de développement.
  4. Mettez à jour pour inclure les dépendances de pair comme:

    • Utilisez pour les dépendances de production et de développement. npm install Mettez à jour pour inclure les dépendances de pair comme
    • Utilisez pour les dépendances de production et de développement. package.json Mettez à jour pour inclure les dépendances de pair comme @capacitor/core.
  5. Gérer les dépendances spécifiques à la plateforme:

    • iOS: Configurer CocoaPods ou SPM avec des bibliothèques comme Alamofire ou SwiftyJSON.
    • Android: Utiliser Gradle pour ajouter des dépendances comme Gson ou AppCompat.
  6. Optimiser les performances:

    • Fixer les versions, auditer les dépendances et résoudre les conflits pour garantir la stabilité.
  7. Utiliser des outils comme Capgo pour les mises à jour en temps réel:

    • Faites des mises à jour instantanément sans passer par les app stores.

Comparaison Rapide des Outils:

PlateformeOutilExemple de Dépendance
JavaScriptnpmnpm install lodash --save
iOSCocoaPods/SPMpod 'Alamofire', '~> 5.6.4'
AndroidGradleimplementation 'com.google.code.gson:gson:2.10.1'

Pourquoi cela compte: Gérer efficacement les dépendances garantit que votre plugin fonctionne sans heurt sur plusieurs plateformes, économise du temps et évite les erreurs. Découvrons les étapes plus en détail.

Comment créer un Capacitor plugin pour iOS/Android

Capacitor Documentation du Framework

Configuration de votre environnement de développement

Préparez votre configuration avec les outils nécessaires pour gérer Capacitor plugin les dépendances efficacement.

Outils de développement requis

Voici une liste des outils dont vous aurez besoin :

OutilVersionObjectif
Environnement de runtime Node.js16.0.0+Environnement de runtime JavaScript
npm8.0.0+Gestion de packages
Xcode14.0+Développement iOS (Mac uniquement)
Android StudioElectric Eel+Développement Android
CocoaPods1.11.0+Gestion des dépendances iOS
JDK11+Outils de construction Android

Lancer un nouveau plugin

Utilisez les Capacitor CLI pour démarrer votre projet de plugin. Cela inclut la configuration des plateformes et la nomination de votre plugin en utilisant un format de domaine inversé (par exemple, com.mycompany.plugin):

  1. Exécutez la commande suivante :
    npm init @capacitor/plugin
  2. Choisissez vos plateformes cibles (iOS/Android).
  3. Attribuez un nom à votre plugin en format de domaine inversé.

Étapes de configuration du projet

  1. Mettre à jour package.json

    Personnalisez votre package.json pour inclure les éléments suivants :

    {
      "capacitor": {
        "ios": {
          "src": "ios"
        },
        "android": {
          "src": "android"
        }
      },
      "peerDependencies": {
        "@capacitor/core": "^5.0.0"
      }
    }
  2. Configuration de mise en œuvre spécifique au plateforme

    • Pour iOS, assurez-vous que votre fichier Podfile inclut :

      platform :ios, '13.0'
      use_frameworks!
    • Pour Android, vérifiez que votre build.gradle contient :

      android {
          compileSdkVersion 33
          defaultConfig {
              minSdkVersion 22
          }
      }
  3. Configurer les variables d'environnement suivantes pour vos outils de développement :

    Configurez les variables d'environnement suivantes pour vos outils de développement :

    VariableObjectifValeur d'exemple
    ANDROID_HOMEEmplacement d'installation d'Android SDK/Users/username/Library/Android/sdk
    JAVA_HOMEChemin d'installation de JDK/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home
    XCODE_SELECTOutils de ligne de commande Xcode/Applications/Xcode.app/Contents/Developer

Une fois votre projet configuré, vous êtes prêt à passer à la gestion des dépendances JavaScript.

Dépendances JavaScript

La gestion efficace des dépendances JavaScript est essentielle pour maintenir une performance stable des plugins.

npm Installation de package

npm

Pour installer les dépendances, utilisez les commandes suivantes :

# Add a production dependency
npm install lodash --save

# Add a development dependency
npm install @types/lodash --save-dev

Assurez-vous d'inclure manuellement les dépendances de peer dans votre package.json fichier. Testez toutes les dépendances pour confirmer la compatibilité sur les deux plateformes web et natives.

Gestion de package.json

Voici un exemple de package.json configuration :

{
  "name": "my-capacitor-plugin",
  "version": "1.0.0",
  "dependencies": {
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "@types/lodash": "^4.14.195",
    "@capacitor/core": "^5.0.0"
  },
  "peerDependencies": {
    "@capacitor/core": "^5.0.0"
  }
}

Pour maintenir la cohérence, bloquez les versions des dépendances de manière appropriée :

Type de contrainteExempleUtilisation
Exact”5.0.0”Pour les dépendances critiques nécessitant une version spécifique
Caret”^5.0.0”Permet les mises à jour mineures et de patchs
Tilde”~5.0.0”Restreint les mises à jour aux patchs uniquement

Utilisation des bibliothèques JavaScript

Lors de l'importation de bibliothèques, concentrez-vous sur la réduction de la taille du bundle :

// Import only the required function
import { isEqual } from 'lodash';

export class MyPlugin {
  async compare(options: { value1: any, value2: any }): Promise<boolean> {
    return isEqual(options.value1, options.value2);
  }
}

En outre, assurez-vous un traitement correct des erreurs et des vérifications de type :

import { Plugin } from '@capacitor/core';
import { validate } from 'your-validation-library';

@Plugin({
  name: 'MyPlugin',
  platforms: ['web', 'ios', 'android']
})
export class MyPlugin {
  async validateData(data: unknown): Promise<void> {
    try {
      if (!validate(data)) {
        throw new Error('Invalid data format');
      }
      // Continue processing if valid
    } catch (error) {
      throw new Error(`Validation failed: ${error.message}`);
    }
  }
}

Découvrez ensuite comment gérer les dépendances spécifiques à la plateforme pour iOS.

Dépendances iOS

Cette section explique comment gérer les dépendances iOS natives en Plugins CapacitorUne fois que vous avez configuré vos dépendances JavaScript, la prochaine étape consiste à gérer les dépendances natives iOS.

Pods Cocoa Configurer

Pods Cocoa

Initialisez d'abord CocoaPods dans votre répertoire iOS :

cd ios
pod init

Mettez à jour votre Plugin.podspec fichier avec les configurations suivantes :

Pod::Spec.new do |s|
  s.name = 'MyCapacitorPlugin'
  s.version = '1.0.0'
  s.summary = 'Your plugin description'
  s.platform = :ios, '13.0'
  s.dependency 'Capacitor'
  # Include your iOS dependencies here
  s.dependency 'Alamofire', '~> 5.6.4'
end

Configuration du Podfile

Après l'initialisation de CocoaPods, configurez le Podfile pour inclure Capacitor et toute autre bibliothèque tiers supplémentaire :

platform :ios, '13.0'
use_frameworks!

def capacitor_pods
  pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
  pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
end

target 'Plugin' do
  capacitor_pods
  # Add third-party dependencies
  pod 'KeychainAccess', '~> 4.2.2'
  pod 'SwiftyJSON', '~> 5.0.1'
end

target 'PluginTests' do
  capacitor_pods
end

Voici quelques modèles de configuration de dépendance courants :

Type de contrainteExempleUtilisation
Version exactepod 'KeychainAccess', '4.2.2'Lorsqu'une contrôle précis est nécessaire, comme pour les composants de sécurité
Version mineurepod 'Alamofire', '~> 5.6'Pour les API stables qui peuvent recevoir des mises à jour de patch
Version majeurepod 'SwiftyJSON', '> 5.0'Lorsque la flexibilité sur les mises à jour est acceptable

Dépendances de Package Swift

Si vous préférez ne pas utiliser CocoaPods, le Gestionnaire de Packages Swift (SPM) est une bonne alternative. Ajoutez les dépendances SPM directement dans Xcode avec la configuration suivante dans votre Package.swift fichier :

// Package.swift
dependencies: [
    .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.6.4")),
    .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "5.0.1")
]

Pour utiliser les dépendances SPM dans votre plugin code, importez-les et intégrez-les comme nécessaire. Par exemple :

import Capacitor
import Alamofire

@objc(MyPlugin)
public class MyPlugin: CAPPlugin {
    @objc func makeRequest(_ call: CAPPluginCall) {
        AF.request("https://api.example.com/data").response { response in
            // Process the response
            call.resolve([
                "data": response.data
            ])
        }
    }
}

Cette approche vous permet de choisir entre CocoaPods et Gestionnaire de Packages Swift en fonction des besoins de votre projet.

Dépendances Android

Configurez les dépendances Android pour garantir une intégration native fluide. Voici comment gérer les dépendances pour votre plugin Capacitor.

Gradle Dépendances

Interface de l'outil de construction Gradle

Ajoutez les configurations suivantes à votre build.gradle fichier :

android {
    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 33
    }
}

dependencies {
    implementation "androidx.appcompat:appcompat:1.6.1"
    implementation "com.google.code.gson:gson:2.10.1"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.20"
    implementation project(':capacitor-android')
}

Définissez les versions supplémentaires dans le buildscript block :

buildscript {
    ext {
        androidxCoreVersion = '1.10.1'
        kotlinVersion = '1.8.20'
    }
}

Une fois les dépendances configurées, assurez-vous de configurer les répertoires nécessaires.

Configuration du Répertoire

Dans votre niveau de projet build.gradle, incluez les répertoires Maven requis :

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url "https://jitpack.io" }
    }
}

Si vous utilisez des répertoires Maven personnalisés ou privés, ajoutez les informations d'identification comme suit :

maven {
    url "https://maven.example.com/releases"
    credentials {
        username = project.findProperty("mavenUsername") ?: System.getenv("MAVEN_USERNAME")
        password = project.findProperty("mavenPassword") ?: System.getenv("MAVEN_PASSWORD")
    }
}

Une fois les répertoires configurés, résolvez les conflits de dépendances qui peuvent survenir.

Résolution des Conflits deCompatibilité

Pour gérer les conflits de dépendances, appliquez des résolutions de versions dans votre build.gradle:

configurations.all {
    resolutionStrategy {
        force "org.jetbrains.kotlin:kotlin-stdlib:1.8.20"
        force "androidx.core:core-ktx:1.10.1"
    }
}

Voici des stratégies pour résoudre les problèmes de dépendances courants :

Type de problèmeStratégieExemple
Conflit de versionForcer une version spécifiqueforce 'com.google.code.gson:gson:2.10.1'
Plusieurs versionsExclure un moduleexclude group: 'org.json', module: 'json'
Problèmes transitatifsUtiliser des versions strictesstrictly 'androidx.core:core-ktx:1.10.1'

Par exemple, vous pouvez exclure des modules en conflit comme ceci :

dependencies {
    implementation('library:name:1.0.0') {
        exclude group: 'com.conflicting.dependency'
    }
}

Finalement, optimisez votre processus de construction en activant la mise en cache et l'exécution parallèle dans gradle.properties:

org.gradle.caching=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx2048m

Capgo Intégration

Capgo Interface de mise à jour en temps réel

En utilisant Capgo en parallèle de la gestion de dépendances native et JavaScript, la mise à jour de votre plugin devient plus rapide et plus facile.

À propos de Capgo

Capgo est une plateforme de mise à jour en temps réel conçue pour les Capacitor plugins et applications. Avec plus de 23,5 millions de mises à jour délivrées dans 750 applications de production [1], Capgo permet aux développeurs de pousser des mises à jour pour les dépendances et les code instantanément - aucune revue de l'App Store n'est requise. Les mises à jour sont sécurisées par cryptage de bout en bout et répondent aux normes de conformité Apple et Android.

Capgo Mise à jour

Capgo simplifie la gestion des dépendances de plugins avec ces fonctionnalités :

CaractéristiqueCe qu'il faitIndicateur clé
Mises à jour en temps réelEnvoi de mises à jour en quelques minutes95% de mise à jour des utilisateurs en 24 heures
Mises à jour partiellesTélécharger uniquement les fichiers modifiés434ms de temps de réponse moyen API
Contrôle de versionGérer plusieurs versionsTaux de réussite mondial de 82%
Système de canalCibler des groupes d'utilisateurs spécifiquesSupporte plusieurs canaux de déploiement

Source : [1]

Capgo fonctionne de manière fluide avec les outils CI/CD comme GitHub Actions, GitLab CI et Jenkins, automatisant les mises à jour des dépendances et garantissant des versions cohérentes des plugins. Ces outils facilitent l'intégration de Capgo dans votre flux de travail.

Configuration de Capgo

Suivez ces étapes pour intégrer Capgo dans votre projet :

  1. Installez le Capgo CLI

    Exécutez la commande suivante dans votre terminal :

    npx @capgo/cli init
  2. Configurez les préférences de mise à jour

    Utilisez le tableau de bord Capgo pour configurer les canaux et les préférences de déploiement. Les configurations hébergées sur le cloud et auto-hébergées sont prises en charge.

  3. Ajoutez la logique de mise à jour

    Ajoutez ce code à votre fichier de plugin principal pour activer les mises à jour :

    import { Capgo } from '@capgo/capacitor-updater';
    
    // Initialize Capgo
    const capgo = new Capgo({
      appId: 'YOUR_APP_ID',
      channel: 'production'
    });
    
    // Check for updates
    await capgo.checkForUpdate();

“Nous pratiquons un développement agile et @Capgo est essentiel pour livrer continuellement à nos utilisateurs !” - Rodrigo Mantica

Capgo fournit également un tableau de bord d'analyse pour des informations en temps réel sur les taux de réussite des mises à jour et l'activité des utilisateurs. Les fonctionnalités comme le retour en arrière en un clic et le suivi des erreurs aident à résoudre rapidement les problèmes, ce qui permet de maintenir les mises à jour de vos plugins en cours de manière fluide.

Conclusion

Révision du processus

Gestion des dépendances pour les Capacitor plugins implique l'alignement des composants natifs (iOS et Android) avec leurs équivalents JavaScript pour garantir une intégration fluide. Ce processus comprend des paramétrages spécifiques aux plateformes et la gestion de packages JavaScript pour atteindre la meilleure performance. Suivre les étapes décrites aidera à maintenir une fonctionnalité stable et efficace du plugin.

Meilleures Pratiques

Pour gérer efficacement les dépendances, considérez ces pratiques :

PratiqueAvantageComment Mettre en œuvre
Fixation de VersionÉvite les problèmes inattendusUtilisez des versions fixes dans package.json
Isolement de la PlateformeMinimise les conflitsDépendances Native Séparées
Mises à jour régulièresAméliore la sécuritéAppliquer les correctifs critiques avec promptitude
Audit des dépendancesDétection des risquesExécuter npm audit fréquemment

L'utilisation de outils d'actualisation en temps réel comme Capgo peut simplifier et améliorer encore ces pratiques en permettant des mises à jour en temps réel.

Capgo avantages

Capgo simplifie le processus de gestion des dépendances tout en offrant une performance solide. Il atteint une impressionnante taux d'actualisation des utilisateurs de 95% en 24 heures et maintient un temps de réponse API mondial de 434ms [1]Avec chiffrage de bout en bout, il garantit des mises à jour sécurisées qui répondent aux deux lignes directrices d'Apple et d'Android. Pour les équipes gérant plusieurs versions de plugiciels, le système de canal de Capgo permet des déploiements ciblés pour des groupes d'utilisateurs spécifiques.

Voici un aperçu rapide des performances de Capgo :

IndicateurValeur
Temps de réponse global de API434ms
Taux de réussite des mises à jour82%
Taux d'actualisation des utilisateurs (24 heures)95%
Mises à jour en temps réel pour les applications Capacitor

Lorsqu'un bug de la couche web est en ligne, expédiez la correction à travers Capgo au lieu de attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les changements natifs restent dans le chemin de revue normal.

Commencez dès maintenant

Dernières actualités de notre Blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile vraiment professionnelle.