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

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

Capacitor プラグインを横断するプラットフォームで実践的なステップとベストプラクティスを学び、依存性管理を簡素化する。

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

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

コンテンツマーケター

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

依存性を追加する Capacitor プラグインは複雑に見えますが、明確なステップに分割することで簡単になります。ここでは、必要な情報を知っておく必要があります。

  1. ツールを理解する:

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

  3. __CAPGO_KEEP_0__ プラグインプロジェクト Capacitor plugin project:

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

    • Use npm install プロダクションと開発依存関係のために。
    • Update package.json パートナ依存関係の例として @capacitor/core.
  5. プラットフォーム固有の依存関係を処理する:

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

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

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

ツールの比較:

プラットフォーム ツール 例の依存関係
JavaScript npm npm install lodash --save
アサイン CocoaPods/SPM pod 'Alamofire', '~> 5.6.4'
アサイン Gradle implementation 'com.google.code.gson:gson:2.10.1'

できだのをかべるバールバートを実だためは、日期にいます。コンターが当前を試いです。バールバートを强いです。

バールバートを使用には、アサインにいます。バールバートを実だためは、日期にいます。 Capacitor バールバートをアサインにいます。

Capacitor Framework Documentation Website

開発環境の設定

必要なツールを用意して、__CAPGO_KEEP_0__ プラグインの依存関係を効果的に管理する Capacitor plugin 開発に必要なツールのリスト

ツール

バージョン

目的 Node.js JavaScriptの実行環境
__CAPGO_KEEP_0__ 16.0.0+ __CAPGO_KEEP_0__のバージョン
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. を含む逆ドメイン形式の名前を付けてください。

プロジェクト設定手順

  1. 更新 package.json

    を含む変更 package.json を含む以下の内容:

    {
      "capacitor": {
        "ios": {
          "src": "ios"
        },
        "android": {
          "src": "android"
        }
      },
      "peerDependencies": {
        "@capacitor/core": "^5.0.0"
      }
    }
  2. プラットフォーム固有の設定

    • の場合 iOS, Podfileに以下を含めてください:

      platform :ios, '13.0'
      use_frameworks!
    • の場合 Androidを確認する 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

依頼されたパッケージを手動で含める必要があります。 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 セットアップ

ココアポッド

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

制約タイプ

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

Swiftパッケージ依存関係

CocoaPodsを使用しない場合は、Swift Package Manager (SPM)が代替として適しています。SPM依存関係を直接Xcodeで追加するには、以下の構成を使用してください。 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")
]

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

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

Capacitor プラグインの依存関係を設定して、ネイティブの統合をスムーズにすることができます。

Gradle 依存関係

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

プロジェクトの 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'
    }
}

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

リポジトリの設定

プロジェクトのレベルで 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")
    }
}

__CAPGO_KEEP_0__

依存関係の不一致が発生する可能性があるため、リポジトリを設定した後、依存関係の不一致を解決する必要があります。

互換性の問題を修正する 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'
伝達的な問題 Use strict versions strictly 'androidx.core:core-ktx:1.10.1'

For instance, you can exclude conflicting modules like this:

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 Live Update ダッシュボード インターフェース

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

Capgo について

Capgo は、Capacitor プラグインとアプリ用のライブアップデートプラットフォームです。750 の実稼動アプリに 23.5 万のアップデートを配信したことで知られています。 [1]Capgo は、依存関係と code の更新を即時で、App Store のレビューなしで行うことができます。アップデートは、端末間で暗号化され、Apple と Android の規制に適合しています。

Capgo のアップデート機能

Capgo は、次の機能でプラグインの依存関係を簡単に管理します:

機能 機能の説明 重要指標
リアルタイム更新 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();

「Agile開発を実践し、@Capgoは、ユーザーに継続的に提供するmission-criticalなものです!」 - Rodrigo Mantica

Capgoは、リアルタイムの分析ダッシュボードを提供し、更新成功率とユーザー活動に関する洞察を提供します。 一クリックロールバックやエラートラッキングなどの機能を使用して、問題を迅速に解決し、プラグインの更新をsmoothに実行できます。

まとめ

プロセスレビュー

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

ベストプラクティス

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

実践 利点 実装方法
バージョン固定 予期せぬ問題を回避する __CAPGO_KEEP_0__の固定バージョンを使用する package.json
プラットフォーム隔離 依存性間の競合を最小限に抑える ネイティブ依存性を分離する
定期的な更新 セキュリティの向上 緊急修正を迅速に適用する
依存性のアウディット リスクの検出 __CAPGO_KEEP_0__ 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は依存関係の管理プロセスを簡素化し、強力なパフォーマンスを実現します。95%のユーザーが24時間以内に更新され、グローバルAPIの応答時間は434msです。 __CAPGO_KEEP_0__のチャンネルシステムは、複数のプラグインバージョンを管理するチームにとって、特定のユーザーグループ向けのターゲットデプロイを可能にします。
アップデート成功率 82%
ユーザー更新率 (24 時間) 95%

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

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

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

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

Get Started Now

Latest from our Blog

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