__CAPGO_KEEP_0__ のメインコンテンツにジャンプ

依存関係をCapacitor プラグインに追加する方法

実践的なステップとベストプラクティスを通じて、Capacitor プラグインを横断する依存関係管理を学びましょう。

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

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

Content Marketer

How to Add Dependencies in Capacitor Plugins

Adding dependencies to Capacitor plugins can feel overwhelming, but it’s easier when broken into clear steps. Here’s what you need to know:

  1. Understand the tools:

    • JavaScript: Use npm to manage dependencies.
    • iOS: Use CocoaPods またはSwift Package Manager (SPM)。
    • Android:使用 Gradle 依存関係の管理のために
  2. 開発環境を設定する:

  3. Start your Capacitor プラグインプロジェクト:

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

    • Capacitorを使用してプロダクションと開発依存関係を設定します。 npm install Capacitorを使用して
    • Capacitorを使用してpeer依存関係を含む依存関係を更新します。 package.json プラットフォーム固有の依存関係をハンドル @capacitor/core.
  5. iOS:

    • :CocoaPodsまたはSPMを使用してライブラリを設定します。ライブラリ Alamofire または SwiftyJSON.
    • AndroidGradleを使用して、GsonやAppCompatなどの依存関係を追加します。
  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 iOS/Android用プラグイン

Capacitor フレームワーク ドキュメント ウェブサイト

開発環境の設定

必要なツールを用意してください 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 build tools

Starting a New Plugin

Use the Capacitor CLI to kick off your plugin project. This includes setting up platforms and naming your plugin using a reverse-domain format (e.g., 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 エスト、読できる Podfile できるって:

      platform :ios, '13.0'
      use_frameworks!
    • For アシビ、読できる build.gradle 参数にからいです

      android {
          compileSdkVersion 33
          defaultConfig {
              minSdkVersion 22
          }
      }
  3. ブログムイントをコンタートにいなたるブログムイントをコンタートです

    ブログムイント

    コンタート ブログムイント コンタート
    ANDROID_HOME Android SDK の場所 /Users/username/Library/Android/sdk
    JAVA_HOME 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

peer依存関係を手動でファイルに含めてください。 package.json 両方の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"
  }
}

互換性を維持するために、依存関係のバージョンを適切にロックしてください。

制約タイプ 使用例
Exact “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依存関係

このセクションでは、iOSネイティブ依存関係を管理する方法を説明します。 Capacitor プラグイン。JavaScript依存関係を設定した後、次のステップはiOSネイティブ依存関係を処理することです。

CocoaPods 設定

CocoaPods

iOSディレクトリでCocoaPodsを初期化することから始めます。

cd ios
pod init

次に、以下の構成を含む Plugin.podspec ファイルを更新します。

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 Configuration

CocoaPodsを初期化した後、PodfileにCapacitorと追加の第三者ライブラリを含めるように構成します。

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

ここでは、一般的な依存関係の構成パターンを示します。

Constraint Type 用途
厳密なバージョン pod 'KeychainAccess', '4.2.2' セキュリティコンポーネントなどの厳密な制御が必要な場合
マイナーバージョン pod 'Alamofire', '~> 5.6' 安定したAPIがパッチアップデートを受けられる場合
メジャーバージョン pod 'SwiftyJSON', '> 5.0' アップデート間で柔軟性が必要な場合

Swift Package依存関係

CocoaPodsを使用せずに、Swift Package Manager (SPM)を使用したい場合は、XcodeでSPM依存関係を直接追加できます。以下の構成を、ファイル内に追加してください。 Package.swift file:

// 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依存関係

Set up Android dependencies to ensure smooth native integration. Here’s how to manage dependencies for your Capacitor plugin.

Gradle 依存関係

Gradle Build Tool Interface

Capgoプラグインのための依存関係を設定するには、以下の設定を追加する必要があります。 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'
    }
}

__CAPGO_KEEP_0__

リポジトリ構成

プロジェクトレベルで build.gradle,

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

,

, , ,
, __CAPGO_KEEP_0__ force 'com.google.code.gson:gson:2.10.1'
特定バージョンを強制 複数バージョン exclude group: 'org.json', module: 'json'
モジュールを除外 依存関係の問題 strictly 'androidx.core:core-ktx:1.10.1'

例えば、以下のように競合するモジュールを除外できます。

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

最後に、キャッシュと並列実行を有効にすると、ビルドプロセスを最適化できます。 gradle.properties:

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

Capgo 統合

Capgo Live Update ダッシュボード インターフェース

Capgo をネイティブと JavaScript の依存関係管理と組み合わせると、プラグインの更新が速くなり、簡単になります。

About Capgo

Capgoは、Capacitor プラグインとアプリ向けのライブアップデートプラットフォームです。 750 のプロダクションアプリを通じて、23.5 百万回のアップデートを配信しています。 [1]Capgoは、開発者が依存関係とcodeのアップデートを即時実行できるようにします - アプリストアのレビューは必要ありません。アップデートは、端末間で暗号化され、AppleとAndroidの両方の規制基準を満たしています。

Capgoアップデート機能

Capgoは、次の機能でプラグイン依存関係の管理を簡素化しています。

機能 機能の説明 重要指標
ライブアップデート 数分でアップデートを実行 24 時間以内に 95% のユーザーがアップデート
部分アップデート 変更されたファイルのみをダウンロード 434ms平均のAPIレスポンスタイム
バージョン管理 複数バージョンの管理 グローバルでの成功率82%
チャンネルシステム 特定のユーザーグループをターゲット 複数のデプロイチャンネルをサポート

ソース: [1]

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

Capgoの設定

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

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

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

    npx @capgo/cli init
  2. 更新設定を構成する

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

  3. 更新ロジックを追加する

    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();

「私たちはアジャイル開発を実践しています。@Capgo は、ユーザーに継続的に提供するmission-criticalなものです」と、Rodrigo Manticaが述べています。

Capgo は、更新成功率とユーザー活動のリアルタイムの洞察を提供する分析ダッシュボードも提供しています。ロールバックとエラー追跡などの機能は、問題を迅速に解決し、プラグインの更新を円滑に実行するのに役立ちます。

まとめ

プロセスレビュー

Capacitor プラグインの依存関係を管理するには、ネイティブ コンポーネント (iOS と Android) と JavaScript コンポーネントを同期する必要があります。これにより、Smooth な統合が実現されます。このプロセスには、プラットフォーム固有のセットアップと JavaScript パッケージの管理が含まれます。これにより、最適なパフォーマンスを実現できます。以下の手順を実行することで、安定したおよび効率的なプラグイン機能を維持できます。

ベスト プラクティス

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

実践 メリット 実装方法
バージョン固定 予期しない問題を回避 Use fixed versions in package.json
プラットフォーム隔離 競合を最小限に抑える ネイティブ依存関係を分離
定期的な更新 セキュリティの向上 緊急修正を迅速に適用
Dependency Auditing リスクの検出 Run npm audit 頻繁に

ライブアップデートツールを使うことで、Capgoは、リアルタイムのアップデートを可能にし、実践を簡素化し、改善することができます。

Capgoの利点

Capgoは依存関係の管理プロセスを簡素化し、強力なパフォーマンスを実現します。95%のユーザーが24時間以内にアップデートし、世界中のCapgoの応答時間は434msです。 エンドツーヘンドの暗号化により、両方のAppleとAndroidのガイドラインに準拠したセキュアなアップデートを保証します。複数のプラグインバージョンを管理するチームにとって、__CAPGO_KEEP_0__のチャンネルシステムは、特定のユーザーグループ向けにターゲットされたデプロイを可能にします。 APIのパフォーマンスの簡単な見本です。 __CAPGO_KEEP_0__ [1]Capgo

Capgo

指標
API のグローバルレスポンスタイム 434ms
更新成功率 82%
ユーザー更新率 (24 時間) 95%

Capacitor プラグインの依存関係を追加する方法から続けてください。

__CAPGO_KEEP_0__ を使用している場合 Capacitor プラグインの依存関係を追加する方法 ネイティブ プラグインの作業を計画する場合、__CAPGO_KEEP_0__ を接続してください。 Capgo プラグインディレクトリ Capgo プラグインディレクトリの製品ワークフロー Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, __CAPGO_KEEP_0__ プラグイン __CAPGO_KEEP_1__ によって Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの代替の製品ワークフロー Capgo ネイティブ ビルド Capgo ネイティブ ビルドの製品ワークフロー

Capacitor アプリのリアルタイム更新

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

今すぐ始める

ブログの最新記事

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