メインコンテンツにスキップ

How to Add Dependencies in Capacitor Plugins

Learn to streamline dependency management in Capacitor plugins across platforms with practical steps and best practices.

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケティング

How to Add Dependencies in Capacitor Plugins

Capacitorプラグインに依存関係を追加する方法 Capacitor プラグインは複雑に見えますが、明確なステップに分割すると簡単になります。ここでは、必要な情報を紹介します。

  1. ツールの理解:

  2. 開発環境を設定する:

  3. プロジェクトを始める Capacitor プラグイン:

    • を使用して新しいプラグインを作成する npm init @capacitor/plugin __CAPGO_KEEP_0__
  4. Capacitor プラグインに依存する JavaScript を追加する:

    • 使用 npm install 生産用と開発用の依存関係を使用します。
    • 更新 package.json パートナーの依存関係を含めるようにします。例えば @capacitor/core.
  5. プラットフォーム固有の依存関係を取り扱う:

  6. パフォーマンスの最適化:

    • バージョンを固定し、依存関係を検証し、紛争を解決して安定性を確保します。
  7. ツールとして使用します。 Capgo リアルタイムの更新:

    • 即時更新なしアプリストアのレビュー

ツールの比較:

プラットフォーム ツール 例の依存関係
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'

なぜ重要か: 正しく依存関係を管理することで、プラグインが平滑に各プラットフォームで動作し、時間を節約し、エラーを回避することができます。ここでは、詳細にステップを進めていきます。

Capacitorプラグインの作成方法 Capacitor Capacitorフレームワークのドキュメントサイト

Capacitor Framework Documentation Website

開発環境の設定

必要なツールを用意して、 Capacitor プラグイン 依存関係を効果的に管理する

必要な開発ツール

ここでは、必要なツールのリストを示します。

ツール バージョン 目的
Node.js 16.0.0+ JavaScript実行環境
npm 8.0.0+ パッケージ管理
Xcode 14.0+ iOS開発 (Macのみ)
Android Studio Electric Eel+ Android開発
CocoaPods 1.11.0+ iOS依存関係管理
JDK 11+ Androidビルドツール

新しいプラグインの作成

Capgoを使用して、Capacitor CLI を使用してプラグインプロジェクトを開始します。このプロセスには、プラットフォームの設定と、逆ドメイン形式でプラグインを名付けることが含まれます (例: com.mycompany.plugin):

  1. Run the following command:
    npm init @capacitor/plugin
  2. Choose your target platforms (iOS/Android).
  3. Assign a name to your plugin in reverse-domain format.

Project Setup Steps

  1. Update package.json

    Modify your package.json to include the following:

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

    • For iOS, ensure your Podfile includes:

      platform :ios, '13.0'
      use_frameworks!
    • For Android, verify your build.gradle contains:

      android {
          compileSdkVersion 33
          defaultConfig {
              minSdkVersion 22
          }
      }
  3. Set Up Environment Variables

    Configure the following environment variables for your development tools:

    Variable Purpose Example Value
    ANDROID_HOME Android SDK location /Users/username/Library/Android/sdk
    開発ツール用の環境変数を設定する必要があります。 JDK インストールパス /Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home
    XCODE_SELECT Xcode コマンドラインツール /Applications/Xcode.app/Contents/Developer

プロジェクトを設定したら、JavaScript の依存関係を管理する準備ができました。

JavaScript の依存関係

JavaScript の依存関係を効果的に管理することは、安定したプラグインのパフォーマンスを維持するための重要な要素です。

npm パッケージのインストール

npm

依存関係をインストールするには、以下のコマンドを使用してください:

# Add a production dependency
npm install lodash --save

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

Capgoのプラグインで使用する依存関係を追加する方法 package.json 手動でpeer依存関係をファイルに含めることを確認してください。

すべての依存関係を確認して、両方のWebとネイティブプラットフォームで互換性があることを確認してください。

package.jsonの管理 package.json ここに例があります。

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

設定の例:

依存関係のバージョンを適切にロックして、一貫性を維持するようにします。 制約タイプ
使用ケース “5.0.0” 厳密な依存関係の場合、特定のバージョンが必要です
キャレット “^5.0.0” マイナーアップデートとパッチを許可する
~ “~5.0.0” パッチのみのアップデートに制限する

JavaScriptライブラリの使用

ライブラリをインポートする際に、バンドルサイズを最小限に抑えることを優先する:

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

さらに、適切なエラーハンドリングと型チェックを確実に行う:

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

次に、iOS固有の依存関係を取り扱う方法について調べる。

iOS依存関係

__CAPGO_KEEP_0__ プラグインのネイティブiOS依存関係の管理について説明します。 Capacitor pluginsCocoaPods

Capacitor Capgo Builderの設定

CocoaPods

iOSディレクトリでCocoaPodsを初期化してください

cd ios
pod init

次に、以下の設定をファイルに追加してください Plugin.podspec Podfileの設定

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

CocoaPodsを初期化した後、Podfileに__CAPGO_KEEP_0__と追加の第三者ライブラリを含めるように設定してください

After initializing CocoaPods, configure the Podfile to include Capacitor and any additional third-party libraries:

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

使用シナリオ 正確なバージョン Capgoソリューションズマーケティングページの短いUIラベルまたはナビゲーションアイテム
Capgoビルダーのセクションサブタイトルまたはタグライン pod 'KeychainAccess', '4.2.2' 必要な制御が必要な場合、セキュリティコンポーネントなど
安定したAPIのマイナーバージョン pod 'Alamofire', '~> 5.6' 安定したAPIがパッチアップデートを受け取る可能性がある場合
安定したAPIのメジャーバージョン pod 'SwiftyJSON', '> 5.0' アップデート間で柔軟性が必要な場合

Swiftパッケージ依存関係

CocoaPodsを使用しない場合は、Swift Package Manager (SPM)が良くないかもしれません。SPMの依存関係を直接Xcodeで追加して、次の構成を使用してください。 Package.swift SPMの依存関係を使用するには、ファイル

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

To use SPM dependencies in your plugin code, import them and integrate as needed. For example:

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

このアプローチでは、プロジェクトの要件に基づいてCocoaPodsとSwift Package Managerのどちらかを選択できます。

Android依存関係

Android依存関係を設定して、ネイティブの統合をスムーズにすることができます。Capacitor プラグインの依存関係を管理する方法については、以下を参照してください。

Gradle 依存関係

Gradle ビルド ツール インターフェイス

Capacitor プラグインに依存関係を追加するには、以下の設定をプロジェクトの build.gradle ファイル:

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

定義する必要があるバージョンを追加するには、以下のブロックを使用します。 buildscript 依存関係を設定した後、必要なリポジトリを設定する必要があります。

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

リポジトリの設定

プロジェクトのレベルで

, 必要なMavenリポジトリを含めます。 build.gradleカスタムまたはプライベートMavenリポジトリを使用している場合、以下のようにクレデンシャルを追加します。

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

設定

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

リポジトリの設定が完了したら、依存関係の不一致が発生する可能性があるので対処してください。

互換性の問題の修正

依存関係の不一致を解決するには、バージョン解決を適用してください。 build.gradle:

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

依存関係の不一致を解決するための戦略

問題の種類 戦略
バージョン不一致 特定のバージョンを強制する force 'com.google.code.gson:gson:2.10.1'
複数バージョン モジュールを除外する exclude group: 'org.json', module: 'json'
伝達的な問題 厳格なバージョンを使用 strictly 'androidx.core:core-ktx:1.10.1'

Capacitor プラグインで依存関係を追加する方法については、以下の例のように、競合するモジュールを除外できます。

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

Finally, optimize your build process by enabling caching and parallel execution in gradle.properties:

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

Capgo 統合

Capgo ライブアップデートダッシュボードインターフェイス

Capacitorプラグインで依存関係を追加する方法 Using Capgo along with native and JavaScript dependency management makes updating your plugin faster and easier.

About Capgo

Capgoは、Capacitor プラグインおよびアプリ向けのライブアップデートプラットフォームです。 750の実稼動アプリを通じて、23.5百万回以上のアップデートを提供しています。 [1],Capgoは開発者が依存関係の更新をプッシュし、codeで即座に実行できるようにします - アプリストアのレビューは必要ありません。更新は端末間の暗号化で保護され、AppleおよびAndroidの規制基準を満たします。

Capgo アップデート機能

Capgoはプラグインの依存関係を管理することを簡素化する機能を提供します。

機能 What It Does 重要指標
リアルタイム更新 コンテキスト:ホームページの問題/解決部分。役割:セクションまたはページヘッダー。見られる場所:ページpremium-support.astro。メッセージキー`ps_help_updates_title` (Ps Help Updates Title)。 分単位で更新
24時間で95%のユーザー更新率 部分更新 434ms average API response time
434ms平均__CAPGO_KEEP_0__レスポンスタイム バージョン管理 コンテキスト:Capgoマーケティングウェブサイト。役割:短いUIラベルまたはナビゲーションアイテム。メッセージキー`version_control` (Version Control)。
Channel System 対象ユーザーを特定する 複数のデプロイチャネルをサポート

ソース: [1]

CapgoはCI/CDツールであるGitHub Actions、GitLab CI、Jenkinsと組み合わせて、依存関係の更新とプラグインのバージョンを一貫して管理することができます。これらのツールは、Capgoをワークフローに統合することをより簡単にします。

Capgoの設定

Capgoをプロジェクトに統合するには、以下の手順に従ってください。

  1. CapgoのCLIをインストール

    ターミナルで以下のコマンドを実行してください。

    npx @capgo/cli init
  2. 更新設定の構成

    Capgoのダッシュボードを使用して、デプロイチャネルと設定を設定します。クラウドホスト型と自主ホスト型の両方の設定がサポートされています。

  3. 更新ロジックの追加

    Capacitorプラグインのメインファイルにcodeを追加してアップデートを有効にします。

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

“Agile開発を実践し、@Capgoはユーザーに継続的に提供するmission-criticalな要素です!” - Rodrigo Mantica

Capgoは、リアルタイムでアップデートの成功率とユーザー活動の分析ダッシュボードを提供します。1クリックロールバックやエラー追跡などの機能を使用すると、プラグインのアップデートをスムーズに実行できます。

結論

プロセスレビュー

Managing dependencies for Capacitor plugins involves aligning the native components (iOS and Android) with their JavaScript counterparts to ensure smooth integration. This process includes platform-specific setups and managing JavaScript packages to achieve the best performance. Following the outlined steps will help maintain stable and efficient plugin functionality.

ベストプラクティス

依存関係を効果的に管理するには、以下の実践を考慮してください。

実践 利点 実装方法
バージョン固定 予期せぬ問題を回避する 固定バージョンを使用する package.json
プラットフォーム隔離 競合を最小限に抑える ネイティブ依存関係を分離する
定期的な更新 セキュリティを向上させる 緊急修正を迅速に適用する
依存関係の監査 リスクを検出する 実行する npm audit 頻繁に

ライブアップデートツールとしてCapgoを使用すると、実行中の更新を可能にすることで、実行中の更新の実践を簡素化し、改善することができます。

Capgoの利点

Capgoは依存関係の管理プロセスを簡素化し、強力なパフォーマンスを提供します。95%のユーザーが24時間以内に更新され、グローバルCapgoの応答時間は 434ms です。また、端末間の暗号化を使用して、AppleおよびAndroidのガイドラインに準拠した安全な更新を保証します。複数のプラグインバージョンを管理するチームにとって、APIのチャンネルシステムは、特定のユーザーグループ向けのターゲットデプロイを可能にします。 ここでは、__CAPGO_KEEP_0__のパフォーマンスについて簡単にご紹介します。 [1]. With end-to-end encryption, it ensures secure updates that comply with both Apple and Android guidelines. For teams managing multiple plugin versions, Capgo’s channel system allows targeted deployments for specific user groups.

Here’s a quick look at Capgo’s performance:

グローバル__CAPGO_KEEP_0__応答時間 434ms
APIは依存関係の管理プロセスを簡素化し、強力なパフォーマンスを提供します。 __CAPGO_KEEP_0__は、AppleおよびAndroidのガイドラインに準拠した安全な更新を保証します。
アップデート成功率 82%
ユーザー更新率 (24 時間) 95%

Keep going from How to Add Dependencies in Capacitor Plugins

Capacitor プラグインに依存関係を追加する方法を使用している場合 How to Add Dependencies in Capacitor Plugins Capacitor プラグインディレクトリと接続するには Capgo Plugin Directory for the product workflow in Capgo Plugin Directory, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, プラグインの追加または更新 プラグインの追加または更新の実装詳細 イオニック エンタープライズ プラグイン代替 イオニック エンタープライズ プラグイン代替の製品ワークフローについて Capgoネイティブ ビルド Capgoネイティブ ビルドの製品ワークフローについて

Live updates for Capacitor apps

Capgoでは、ウェブ層のバグが生じた場合、修正をCapgoで配信するのではなく、数日間待ってアプリストアの承認を待つのではなく、ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路で進む。

マーティンから人間のサポートを受けます。

スタートしてください

最新のブログ記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。