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

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

Capacitor プラグインを使用して、プラットフォームを横断して依存関係の管理を簡素化する方法を学びます。

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

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

コンテンツマーケター

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

__CAPGO_KEEP_0__ プラグインに依存関係を追加することは、圧倒的ですが、明確なステップに分解すると簡単になります。ここでは、必要なことを知る必要があります。 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:

  2. __CAPGO_KEEP_0__:

  3. プロジェクトの開始 Capacitor プラグイン プロジェクト:

    • プラグインの作成 npm init @capacitor/plugin 依存関係の追加
  4. __CAPGO_KEEP_0__:

    • __CAPGO_KEEP_0__ npm install 生産用と開発用の依存関係。
    • Update package.json を含むペア依存関係 @capacitor/core.
  5. プラットフォーム固有の依存関係を取り扱う:

    • iOS: CocoaPodsまたはSPMでライブラリ Alamofire または SwiftyJSON.
    • Android: GsonまたはAppCompatを含むGradleで依存関係を追加する
  6. パフォーマンスを最適化する:

    • バージョンを固定し、依存関係を検証し、コンフリクトを解決して安定性を確保します。
  7. ツールとしては Capgo ライブ更新用:

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

ツールの比較:

プラットフォームツール例の依存関係
JavaScriptnpmnpm install lodash --save
iOS CocoaPods/SPMpod 'Alamofire', '~> 5.6.4'
Android Gradleimplementation 'com.google.code.gson:gson:2.10.1'

なぜ重要か: __CAPGO_KEEP_0__ を有効に管理することで、プラグインは平滑に各プラットフォームで動作し、時間を節約し、エラーを回避できます。ここでは、詳細なステップについて説明します。

__CAPGO_KEEP_0__ を作成する方法 Capacitor iOS/Android プラグインの作成

 Capacitor ドキュメント ウェブサイト

開発環境の設定

必要なツールと設定を用意してください Capacitor プラグイン 依存関係を有効にします。

必要な開発ツール

ここでは、必要なツールの一覧を示します。

ツールバージョン目的
Node.js16.0.0+JavaScript実行環境
npm8.0.0+パッケージ管理
Xcode14.0+iOS開発 (Macのみ)
Android StudioElectric Eel+Android開発
CocoaPods1.11.0+iOS依存関係管理
JDK11+Androidビルドツール

新しいプラグインの作成

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

  1. 以下のコマンドを実行してください:
    npm init @capacitor/plugin
  2. ターゲットプラットフォームを選択 (iOS/Android)。
  3. __CAPGO_KEEP_0__でプラグイン名を逆ドメイン形式で割り当ててください。

プロジェクト設定手順

  1. 更新 package.json

    を含むように package.json プラットフォーム固有の設定

    {
      "capacitor": {
        "ios": {
          "src": "ios"
        },
        "android": {
          "src": "android"
        }
      },
      "peerDependencies": {
        "@capacitor/core": "^5.0.0"
      }
    }
  2. の場合

    • iOS を含むようにしてくださいの場合

      platform :ios, '13.0'
      use_frameworks!
    • Android を確認してください__CAPGO_KEEP_0__ build.gradle 含まれる:

      android {
          compileSdkVersion 33
          defaultConfig {
              minSdkVersion 22
          }
      }
  3. 環境変数をセットアップ

    開発ツール用の環境変数を以下のように設定してください:

    変数目的例の値
    ANDROID_HOMEAndroid SDK の場所/Users/username/Library/Android/sdk
    JAVA_HOMEJDK のインストールパス/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home
    XCODE_SELECTXcode command line tools/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

パイア依存関係を手動でファイルに含めるようにしてください。 package.json すべての依存関係を確認して、両方のWebとネイティブプラットフォームで互換性があることを確認してください。

パッケージ.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依存関係

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

CocoaPods セットアップ

CocoaPods

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

cd ios
pod init

Then, update your 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設定

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

依存関係の設定パターン

制約タイプ使用ケース
厳密なバージョンpod 'KeychainAccess', '4.2.2'厳密な制御が必要な場合、例えばセキュリティコンポーネント
マイナーバージョンpod 'Alamofire', '~> 5.6'安定したAPIがパッチアップデートを受け取る可能性がある場合
メジャーバージョンpod 'SwiftyJSON', '> 5.0'アップデート間で柔軟性が必要な場合

Swiftパッケージ依存関係

CocoaPodsを使用しない場合は、Swift Package Manager (SPM)が良くない代替手段です。SPMの依存関係を直接Xcodeで追加し、以下の構成を使用してください。 Package.swift SPMの依存関係を使用してプラグイン__CAPGO_KEEP_0__を使用するには、ファイル:

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

SPMの依存関係を使用してプラグインcodeを使用するには、必要に応じてインポートして統合してください。例えば:

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 ビルドツールインターフェイス

__CAPGO_KEEP_0__の設定を追加してください。 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')
}

__CAPGO_KEEP_0__の追加バージョンを定義します。 buildscript ブロック:

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

依存関係が設定されたら、必要なリポジトリを設定するようにしてください。

リポジトリの設定

プロジェクトのレベルで build.gradle必要なMavenリポジトリを含めてください。

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

カスタムまたはプライベートMavenリポジトリを使用している場合、以下のようになります。

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

リポジトリが設定されたら、依存関係の互換性問題を解決するようにしてください。

互換性の問題を解決する

To handle dependency conflicts, apply __CAPGO_KEEP_0__ in your build.gradle:

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

Here are strategies for resolving common dependency issues:

依存関係の問題の種類対処方法
バージョン間の競合特定のバージョスを強制する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 ライブアップデートダッシュボードインターフェイス

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

Capgo について

Capgo は、Capacitor プラグインとアプリ用のライブアップデートプラットフォームです。750のプロダクションアプリに跨って、23.5百万回のアップデートを配信したことで知られています。 [1]Capgo は、依存性と code のアップデートを即座にプッシュできるように開発者に支援します。アプリストアのレビューが必要なく、エンドツーエンド暗号化で安全です。また、AppleとAndroidの規制基準を満たしています。

Capgo アップデート機能

Capgo は、次の機能を提供して、プラグイン依存性の管理を簡素化します。

機能それが何をするのかKey Metric
リアルタイム更新1分以内に更新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 の対応物を整合させる必要があります。 これには、プラットフォーム固有の設定と JavaScript パッケージの管理が含まれます。 最適なパフォーマンスを実現するために、以下の手順に従うことで、安定したおよび効率的なプラグイン機能を維持できます。

ベストプラクティス

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

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

ライブアップデートツールを使うことで、Capgoを使用することで、リアルタイムの更新を可能にすることで、これらの慣行を簡素化し向上させることができる。

Capgoの利点

Capgoは依存関係の管理プロセスを簡素化しながら、強力なパフォーマンスを実現します。 24時間以内に95%のユーザー更新率を達成し、グローバル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
Global API Response Timeユーザー更新率(24時間)
__CAPGO_KEEP_0__ simplifies the dependency management process while delivering strong performance. It achieves an impressive82%
95% user update rate within 24 hours95%

Capacitor プラグインから続けて依存関係を追加する

あなたが __CAPGO_KEEP_0__ プラグインを使用している場合 Capacitor プラグインから依存関係を追加する方法 ネイティブ プラグインの作業を計画する場合、__CAPGO_KEEP_0__ プラグイン ディレクトリと接続する Capgo プラグイン ディレクトリ Capgo プラグイン ディレクトリ内での製品ワークフロー Capacitor プラグイン ( Capgo によって提供) Capacitor プラグイン ( Capgo によって提供) の実装詳細 プラグインの追加または更新 プラグインの追加または更新の実装詳細 Ionic Enterprise プラグインの代替 Ionic Enterprise プラグインの代替の製品ワークフロー Capgoネイティブビルド Capgoネイティブビルドの製品ワークフロー用

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

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

今すぐ始めよう

Latest from our Blog

Capgo gives you the best insights you need to create a truly professional mobile app.