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

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

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

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

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

コンテンツマーケター

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

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

  1. ツールを理解する:

    • JavaScript: 使用して依存関係を管理する npm iOS
    • : CocoaPodsまたはSwift Package Manager (SPM)を使用する Android : Gradleを使用する
    • plugins can feel overwhelming, but it’s easier when broken into clear steps. Here’s what you need to know:__CAPGO_KEEP_0__Understand the tools__CAPGO_KEEP_0__ JavaScript__CAPGO_KEEP_0__ 依存関係の管理用。
  2. 開発環境を設定する:

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

    • Install tools like npm init @capacitor/plugin Start your
  4. JavaScript依存関係を追加する:

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

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

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

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

ツールの比較:

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

できだときべるですバールバーストログにいますでしただっていますです

バールバーストログにいますでしただっていますです Capacitor YouTubeバールバーストログトアストルートストアシアバールバーストログにいますでしただっていますです

Capacitor Framework Documentation Website

開発環境の設定

__CAPGO_KEEP_0__の設定用ツールを用意してください。 Capacitor プラグイン 依存関係を効果的に管理するために必要なツールを用意してください。

必要な開発ツール

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

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

新しいプラグインの作成

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 iOS, ensure your Podfile includes:

      platform :ios, '13.0'
      use_frameworks!
    • For Android, 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 コマンド ライン ツール/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”^__CAPGO_KEEP_0__^
^__CAPGO_KEEP_1__^”^5.0.0”__CAPGO_KEEP_0__
Tilde”~5.0.0”__CAPGO_KEEP_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 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

制約タイプ

使用例厳密なバージョン
使用ケース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 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")
]

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 Build Tool インターフェイス

次の構成をプロジェクトの 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")
    }
}

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

互換性の問題を修正する

依存関係の不一致を解決するには、バージョン解決を適用してください。 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 versionsstrictly '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 の依存関係管理と組み合わせると、プラグインの更新が速く簡単になります。

Capgo について

Capgo は、Capacitor プラグインとアプリ用のライブアップデートプラットフォームです。750 のプロダクションアプリに 23.5 万回以上のアップデートを配信したことで知られています。 [1]Capgo は、依存関係と code のアップデートを即座にプッシュできるように開発者に支援します。アプリストアのレビューが必要ありません。アップデートは、端末間で暗号化され、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____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はこれらの慣習をさらに簡素化し、改善することができます。__CAPGO_KEEP_0__ Benefits
アップデート成功率82%
ユーザー更新率 (24 時間)95%
リアルタイム更新機能付きのCapacitorアプリ

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

はじめに始めましょう

最新ブログ記事

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