跳过主要内容
开发 移动 更新

如何在 Capacitor 插件中添加依赖项

学习如何在 Capacitor 插件中跨平台管理依赖项的实用步骤和最佳实践。

马丁·多纳迪厄

马丁·多纳迪厄

内容营销人员

如何在 Capacitor 插件中添加依赖项

添加依赖项到 Capacitor 插件可能会让人感到混乱,但当它们被分解为清晰的步骤时,会变得更容易。以下是您需要了解的内容:

  1. 了解工具:

    • JavaScript: 使用 npm 来管理依赖项。
    • iOS: 使用 CocoaPods 或 Swift Package Manager (SPM)。
    • Android: 使用 Gradle 依赖管理。
  2. 设置您的开发环境:

  3. 开始您的 Capacitor:

    • 插件项目 npm init @capacitor/plugin 使用
  4. 添加 JavaScript 依赖项:

    • 使用 npm install 用于生产和开发依赖项。
    • 更新 package.json 以包含像 @capacitor/core.
  5. 处理平台特定依赖项:

    • iOS: 配置 CocoaPods 或 SPM 与库 AlamofireSwiftyJSON.
    • Android: 使用 Gradle 添加依赖项,如 Gson 或 AppCompat。
  6. 优化性能:

    • 锁定版本、审计依赖项并解决冲突以确保稳定性。
  7. 使用工具如 Capgo 进行实时更新:

    • 无需等待应用商店审核即可立即推送更新。

工具快速比较:

平台 工具 示例依赖项
JavaScript npm npm install lodash --save
iOS CocoaPods/SPM pod 'Alamofire', '~> 5.6.4'
安卓 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 only)
Android Studio Electric Eel+ Android开发
CocoaPods 1.11.0+ iOS依赖管理
JDK 11+ Android构建工具

开始一个新插件

使用 Capacitor CLI 来启动您的插件项目。包括设置平台和使用反向域名格式命名您的插件(例如, com.mycompany.plugin):

  1. 运行以下命令:
    npm init @capacitor/plugin
  2. 选择您的目标平台(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 SDK location /Users/username/Library/Android/sdk
    /Users/username/Library/Android/国纳给的车导给请求场百 Java 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 和原生平台上都兼容

管理 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 依赖项

本节解释了如何管理本机 iOS 依赖项 Capacitor 插件一旦您设置了 JavaScript 依赖项,下一步就是处理本机 iOS 依赖项

CocoaPods Setup

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 配置

初始化 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)是一个不错的替代方案。使用以下配置在Xcode中直接添加SPM依赖项 Package.swift 文件:

// 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。

安卓依赖项

设置安卓依赖项以确保原生集成顺畅。以下是如何为您的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'
传递性问题 使用严格版本 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 插件和应用程序设计。通过超过 23.5 万次的更新在 750 个生产应用程序中交付,Capgo 允许开发人员无需 app store 审核即可推送依赖项和 Capacitor 的更新。这些更新使用端到端加密并符合苹果和安卓的合规标准。 [1], Capgo allows developers to push updates for dependencies and code instantly - no app store review required. Updates are secured with end-to-end encryption and meet both Apple and Android compliance standards.

Capgo 使用以下功能简化管理插件依赖项:

Capgo Live Update Dashboard Interface

功能 它做了什么 关键指标
实时更新 在几分钟内推送更新 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 在为用户持续交付方面至关重要!” - 罗德里戈·曼蒂卡

Capgo 还提供了一个实时分析仪表板,用于获取更新成功率和用户活动的实时见解。 一键回滚和错误跟踪等功能有助于快速解决任何问题,保持您的插件更新顺畅运行。

结论

流程审查

管理 Capacitor 插件的依赖项涉及将原生组件(iOS和Android)与其JavaScript对应项对齐,以确保平滑的集成。 这个过程包括平台特定的设置和管理JavaScript包,以实现最佳性能。 遵循这些步骤将有助于维持稳定和高效的插件功能。

最佳实践

要有效地管理依赖项,请考虑以下实践:

实践 收益 如何实施
版本固定 避免意外问题 使用固定版本 package.json
平台隔离 最小化冲突 分离本机依赖
定期更新 提高安全性 及时应用关键修补程序
依赖项审计 检测风险 运行 npm audit 频繁

使用实时更新工具,如Capgo,可以进一步简化和改进这些实践,通过实时更新来实现。

Capgo的优势

Capgo简化了依赖管理过程,同时提供强大的性能。它实现了令人印象深刻的 95%用户更新率在24小时内 并保持全球API响应时间为 434ms [1]。通过端到端加密,它确保了符合苹果和安卓指南的安全更新。对于管理多个插件版本的团队,Capgo的频道系统允许针对特定用户组的部署。

以下是Capgo的性能表现:

指标
全球API响应时间 434ms
更新成功率 82%
用户更新率 (24 小时) 95%

从 Capacitor 插件的添加依赖中继续

如果您正在使用 添加依赖在 Capacitor 插件的添加依赖 为了规划原生插件工作,连接它与 Capgo 插件目录 在 Capgo 插件目录中, Capacitor 插件由 Capgo 在 Capacitor 插件由 Capgo 中, 添加或更新插件 添加或更新插件的实现细节 Ionic Enterprise 插件替代品 为 Ionic Enterprise 插件替代品中的产品工作流程 Capgo 本机构建 为 Capgo 本机构建中的产品工作流程

Capacitor 应用实时更新

当一个 web 层 bug 活跃时,通过 Capgo 将修复推送到用户,而不是等待几天的 app store 审批。用户在后台接收更新,而本机更改仍在正常审批路径中。

立即开始

最新博客

Capgo 为您提供创建真正专业的移动应用所需的最佳见解。