Zum Hauptinhalt springen

Abhängigkeiten in Capacitor Plugins hinzufügen

Lerne, das Dependency-Management in Capacitor-Plugins plattformübergreifend mit praktischen Schritten und Best Practices zu optimieren.

So fügst du Abhängigkeiten in Capacitor Plugins hinzu Capgo Blog-Illustration

Abhängigkeiten zu Capacitor Plugins hinzuzufügen kann einschüchternd wirken, aber mit klaren Schritten ist es einfacher. Das musst du wissen:

  1. Tools verstehen:

    • JavaScript: Nutze npm zur Abhängigkeitsverwaltung.
    • iOS: Nutze CocoaPods oder Swift Package Manager (SPM).
    • Android: Nutze Gradle- zur Abhängigkeitsverwaltung.
  2. Entwicklungsumgebung einrichten:

  3. Starte dein Capacitor-Plugin-Projekt:

    • Nutzt npm init @capacitor/plugin um ein neues Plugin zu erstellen.
  4. JavaScript-Abhängigkeiten hinzufügen:

    • Nutzt npm install für Produktions- und Entwicklungsabhängigkeiten.
    • Update package.json um Peer-Dependencies wie @capacitor/core.
  5. Plattformspezifische Abhängigkeiten verwalten:

    • iOS: Konfiguriere CocoaPods oder SPM mit Bibliotheken wie Alamofire oder SwiftyJSON.
    • Android: Verwende Gradle, um Abhängigkeiten wie Gson oder AppCompat hinzuzufügen.
  6. Performance optimieren:

    • Versionen pinnen, Abhängigkeiten auditieren und Konflikte auflösen, um Stabilität zu gewährleisten.
  7. Nutzen Sie Tools wie Capgo für Live-Updates:

    • Updates sofort pushen, ohne App-Store-Reviews.

Schneller Tool-Vergleich:

Plattform Tool Beispiel-Abhängigkeit
JavaScript npm npm install lodash --save
iOS CocoaPods/SPM pod 'Alamofire', '~> 5.6.4'
Android Gradle- implementation 'com.google.code.gson:gson:2.10.1'

Warum das wichtig istEffektives Dependency-Management stellt sicher, dass dein Plugin plattformübergreifend reibungslos funktioniert, Zeit spart und Fehler vermeidet. Wir gehen im Folgenden auf die einzelnen Schritte ein.

So erstellst du ein Capacitor Plugin für iOS/Android

Capacitor Framework-Dokumentations-Website

Deine Entwicklungsumgebung einrichten

Richte dein Setup mit den nötigen Tools ein, um Capacitor Plugin Dependencies effizient zu verwalten.

Erforderliche Entwicklungstools

Hier ist eine Liste der Tools, die du benötigst:

Tool Version Zweck
Node.js 16.0.0+ JavaScript-Laufzeitumgebung
npm 8.0.0+ Paketverwaltung
Xcode 14.0+ iOS-Entwicklung (nur Mac)
Android Studio Electric Eel+ Android-Entwicklung
CocoaPods 1.11.0+ iOS-Abhängigkeitsverwaltung
JDK 11+ Android-Build-Tools

Ein neues Plugin erstellen

Nutze Capacitor CLI, um dein Plugin-Projekt zu starten. Dazu gehört das Einrichten der Plattformen und das Benennen deines Plugins im Reverse-Domain-Format (z. B. com.mycompany.plugin):

  1. Führe folgenden Befehl aus:
    npm init @capacitor/plugin
  2. Wähle deine Zielplattformen (iOS/Android).
  3. Vergib deinem Plugin einen Namen im Reverse-Domain-Format.

Schritte zum Projekt-Setup

  1. Update package.json

    Ändere deine package.json , um Folgendes hinzuzufügen:

    {
      "capacitor": {
        "ios": {
          "src": "ios"
        },
        "android": {
          "src": "android"
        }
      },
      "peerDependencies": {
        "@capacitor/core": "^5.0.0"
      }
    }
  2. Plattformspezifisches Setup

    • Für iOS, stelle sicher, dass dein Podfile Folgendes enthält:

      platform :ios, '13.0'
      use_frameworks!
    • Für Android, prüfe, ob deine build.gradle enthält:

      android {
          compileSdkVersion 33
          defaultConfig {
              minSdkVersion 22
          }
      }
  3. Umgebungsvariablen einrichten

    Konfiguriere die folgenden Umgebungsvariablen für deine Entwicklungstools:

    Variabel Zweck Beispielwert
    ANDROID_HOME Pfad zu Android SDK /Users/username/Library/Android/sdk
    JAVA_HOME JDK-Installationspfad /Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home
    XCODE_SELECT Xcode Command Line Tools /Applications/Xcode.app/Contents/Developer

Sobald dein Projekt eingerichtet ist, kannst du mit der Verwaltung der JavaScript-Abhängigkeiten weitermachen.

JavaScript-Abhängigkeiten

Effektives Management der JavaScript-Abhängigkeiten ist entscheidend für eine stabile Plugin-Performance.

npm Paketinstallation

npm

Um Abhängigkeiten zu installieren, verwende die folgenden Befehle:

# Add a production dependency
npm install lodash --save

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

Stelle sicher, dass du Peer-Dependencies manuell in dein package.json datei. Teste alle Abhängigkeiten, um die Kompatibilität auf Web- und Native-Plattformen zu bestätigen.

package.json verwalten

Hier ist ein Beispiel package.json Konfiguration:

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

Um Konsistenz zu gewährleisten, sichere die Versionen der Abhängigkeiten entsprechend:

Constraint-Typ Beispiel Anwendungsfall
Exakt “5.0.0” Für kritische Abhängigkeiten, die eine bestimmte Version erfordern
Caret “^5.0.0” Erlaubt Minor-Updates und Patches
Tilde “~5.0.0” Beschränkt Updates auf Patches

Verwendung von JavaScript-Bibliotheken

Achte beim Importieren von Libraries darauf, die Bundle-Größe zu minimieren:

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

Achte außerdem auf sauberes Error-Handling und Type-Checking:

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

Als Nächstes erfährst du, wie du plattformspezifische Dependencies für iOS verwaltest.

iOS-Abhängigkeiten

In diesem Abschnitt erfährst du, wie du native iOS Dependencies in Capacitor Pluginsverwaltest. Sobald deine JavaScript-Dependencies eingerichtet sind, folgt das Handling der nativen iOS-Dependencies.

CocoaPods Setup

CocoaPods

Initialisiere CocoaPods zuerst in deinem iOS-Verzeichnis:

cd ios
pod init

Aktualisiere dann deinen Plugin.podspec Datei mit den folgenden Konfigurationen:

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

Podfile-Konfiguration

Nach der Initialisierung von CocoaPods, konfiguriere die Podfile, um Capacitor und zusätzliche Drittanbieter-Bibliotheken einzuschließen:

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

Hier sind einige gängige Muster für die Abhängigkeitskonfiguration:

Constraint-Typ Beispiel Anwendungsfall
Exakte Version pod 'KeychainAccess', '4.2.2' Wenn präzise Kontrolle erforderlich ist, z. B. für Sicherheitskomponenten
Minor Version pod 'Alamofire', '~> 5.6' Für stabile APIs, die Patch-Updates erhalten können
Major Version pod 'SwiftyJSON', '> 5.0' Wenn Flexibilität bei Updates akzeptabel ist

Swift-Package-Abhängigkeiten

Wenn du CocoaPods nicht nutzen möchtest, ist der Swift Package Manager (SPM) eine gute Alternative. Füge SPM-Dependencies direkt in Xcode mit dieser Konfiguration in deiner Package.swift Datei:

// 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")
]

Um SPM-Dependencies in deinem code Plugin zu nutzen, importiere sie und integriere sie nach Bedarf. Zum Beispiel:

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
            ])
        }
    }
}

Mit diesem Ansatz kannst du je nach Projektanforderungen zwischen CocoaPods und dem Swift Package Manager wählen.

Android-Abhängigkeiten

Richte Android-Dependencies ein, um eine reibungslose native Integration zu gewährleisten. So verwaltest du die Dependencies für dein Capacitor Plugin.

Gradle- Abhängigkeiten

Gradle-Build-Tool-Schnittstelle

Füge die folgenden Konfigurationen zu deiner build.gradle Datei:

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')
}

Definiere zusätzliche Versionen im buildscript Block:

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

Sobald die Abhängigkeiten konfiguriert sind, richte die nötigen Repositories ein.

Repository-Konfiguration

In deiner projektweiten build.gradle, füge die benötigten Maven-Repositories hinzu:

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

Wenn du eigene oder private Maven-Repositories verwendest, füge die Zugangsdaten so hinzu:

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

Nachdem die Repositories eingerichtet sind, behebe mögliche Abhängigkeitskonflikte.

Kompatibilitätsprobleme beheben

Um Abhängigkeitskonflikte zu beheben, wende Version Resolutions in deinem build.gradle:

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

Hier sind Strategien zur Lösung häufiger Abhängigkeitsprobleme:

Problemtyp Strategie Beispiel
Versionskonflikt Bestimmte Version erzwingen force 'com.google.code.gson:gson:2.10.1'
Mehrere Versionen Modul ausschließen exclude group: 'org.json', module: 'json'
Transitive Probleme Strikte Versionen verwenden strictly 'androidx.core:core-ktx:1.10.1'

Zum Beispiel können Sie konfligierende Module so ausschließen:

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

Schließlich optimieren Sie Ihren Build-Prozess, indem Sie Caching und parallele Ausführung in gradle.properties:

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

Capgo Integration

Capgo Live Update Dashboard-Interface

Capgo zusammen mit nativem und JavaScript-Dependency-Management zu nutzen, macht das Aktualisieren deines Plugins schneller und einfacher.

Über Capgo

Capgo ist eine live update Plattform, die für Capacitor Plugins und Apps entwickelt wurde. Mit über 23,5 Millionen ausgelieferten Updates in 750 Produktions-Apps [1], ermöglicht Capgo Entwicklern, Updates für Dependencies und code sofort zu pushen – ganz ohne App-Store-Review. Updates sind durch End-to-End-Verschlüsselung gesichert und erfüllen die Compliance-Standards von Apple und Android.

Capgo Update-Features

Capgo vereinfacht das Verwalten von Plugin-Dependencies mit diesen Features:

Funktion Funktionsweise Kernmetrik
Capgo Live Updates Updates in Minuten pushen 95 % Update-Rate in 24 Stunden
Teilupdates Nur geänderte Dateien downloaden 434ms durchschnittliche API-Antwortzeit
Versionskontrolle Mehrere Versionen verwalten 82 % globale Erfolgsrate
Channel-System Bestimmte Nutzergruppen ansprechen Unterstützt mehrere Deployment-Channels

Quelle: [1]

Capgo funktioniert nahtlos mit CI/CD-Tools wie GitHub Actions, GitLab CI und Jenkins, automatisiert Abhängigkeits-Updates und stellt konsistente Plugin-Versionen sicher. Diese Tools erleichtern die Integration von Capgo in Ihren Workflow.

Capgo einrichten

Folgen Sie diesen Schritten, um Capgo in Ihr Projekt zu integrieren:

  1. Installiere Capgo CLI

    Führen Sie den folgenden Befehl in Ihrem Terminal aus:

    npx @capgo/cli init
  2. Update-Einstellungen konfigurieren

    Verwenden Sie das Capgo-Dashboard, um Deployment-Kanäle und Einstellungen zu konfigurieren. Sowohl Cloud- als auch Self-Hosted-Konfigurationen werden unterstützt.

  3. Update-Logik hinzufügen

    Fügen Sie diesen code in Ihre Haupt-Plugin-Datei ein, um Updates zu aktivieren:

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

„Wir setzen auf agile Entwicklung und @Capgo ist geschäftskritisch, um unseren Nutzern kontinuierlich Updates zu liefern!“ - Rodrigo Mantica

Capgo bietet zudem ein Analytics-Dashboard für Echtzeit-Einblicke in die Erfolgsquoten von Updates und die Nutzeraktivität. Funktionen wie One-Click-Rollback und Error-Tracking helfen, Probleme schnell zu beheben und sorgen dafür, dass Ihre Plugin-Updates reibungslos laufen.

Fazit

Prozess-Review

Die Verwaltung von Abhängigkeiten für Capacitor-Plugins erfordert die Abstimmung der nativen Komponenten (iOS und Android) mit ihren JavaScript-Pendants, um eine nahtlose Integration zu gewährleisten. Dieser Prozess umfasst plattformspezifische Setups und die Verwaltung von JavaScript-Paketen, um die beste Leistung zu erzielen. Die beschriebenen Schritte helfen, eine stabile und effiziente Plugin-Funktionalität aufrechtzuerhalten.

Best Practices

Um Abhängigkeiten effektiv zu verwalten, sollten Sie diese Praktiken beachten:

Maßnahme Vorteil Implementierung
Version Pinning Vermeidet unerwartete Probleme Feste Versionen in package.json
Plattform-Isolation Minimiert Konflikte Native Abhängigkeiten trennen
Regelmäßige Updates Verbessert die Sicherheit Kritische Patches zeitnah anwenden
Abhängigkeiten prüfen Erkennt Risiken Ausführen npm audit häufig

Der Einsatz von live update Tools wie Capgo kann diese Praktiken durch Echtzeit-Updates weiter vereinfachen und verbessern.

Capgo Vorteile

Capgo vereinfacht das Dependency Management bei starker Performance. Dabei erreicht es eine beeindruckende Nutzer-Update-Rate von 95 % innerhalb von 24 Stunden und hält eine globale API-Antwortzeit von 434 ms [1]. Mit Ende-zu-Ende-Verschlüsselung gewährleistet es sichere Updates, die sowohl den Apple- als auch den Android-Richtlinien entsprechen. Für Teams, die mehrere Plugin-Versionen verwalten, ermöglicht das Channel-System von Capgo gezielte Deployments für bestimmte Nutzergruppen.

Ein kurzer Blick auf die Performance von Capgo:

Metrik Wert
Globale Antwortzeit von API 434 ms
Update-Erfolgsrate 82%
Aktualisierungsrate der Nutzer (24 Stunden) 95%

Weiterlesen: So fügst du Abhängigkeiten in Capacitor Plugins hinzu

Wenn du es nutzt Abhängigkeiten in Capacitor Plugins hinzufügen Um die Arbeit an nativen Plugins zu planen, verbinde sie mit Capgo Plugin-Verzeichnis für den Produkt-Workflow im Capgo Plugin-Verzeichnis, Capacitor Plugins von Capgo für das Implementierungsdetail in Capacitor Plugins von Capgo, Plugins hinzufügen oder aktualisieren für die Implementierungsdetails unter „Plugins hinzufügen oder aktualisieren“, Ionic Enterprise Plugin-Alternativen für den Produkt-Workflow in Ionic Enterprise Plugin-Alternativen und Capgo Native Builds optimieren für den Produkt-Workflow in Capgo Native Builds.

Live-Updates für Capacitor-Apps

Wenn ein Bug im Web-Layer live ist, liefere den Fix über Capgo aus, statt Tage auf die App-Store-Freigabe zu warten. Nutzer bekommen das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Neues aus unserem Blog

Capgo gibt dir die besten Insights, um eine wirklich professionelle Mobile App zu erstellen.