跳过主要内容

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

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

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

在__CAPGO_KEEP_0__中添加依赖项 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 与库 AlamofireSwiftJSON.
    • Android: 使用 Gradle 添加依赖项,如 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'

Why it matters:

有效的依赖管理确保您的插件在各个平台上工作得平滑,节省时间并避免错误。让我们深入了解步骤。 Capacitor __CAPGO_KEEP_0__

Capacitor Framework Documentation Website

设置开发环境

为有效管理__CAPGO_KEEP_0__插件依赖项,准备好必要的工具 Capacitor插件 有效管理__CAPGO_KEEP_0__插件依赖项所需的工具

必备开发工具

以下是您需要的工具列表

工具 版本 目的
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构建工具

创建一个新插件

使用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, verify your build.gradle contains:

      android {
          compileSdkVersion 33
          defaultConfig {
              minSdkVersion 22
          }
      }
  3. Set Up Environment Variables

    Configure the following environment variables for your development tools:

    Variable Purpose Example Value
    ANDROID_HOME Android SDK location /Users/username/Library/Android/sdk
    Configure the following environment variables for your development tools: 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和native平台上兼容性。

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

本节解释了如何在 __CAPGO_KEEP_0__ 插件中管理原生 iOS 依赖项。 Capacitor pluginsCocoaPods

允许进行小型更新和修补 设置

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

约束类型

示例 使用场景 精确版本
context 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。

安卓依赖项

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

已配置仓库后,应解决可能出现的依赖项冲突。

修复兼容性问题

要处理依赖项冲突,请在您的 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 Live Update Dashboard Interface

使用Capgo与native和JavaScript依赖管理一起使用,使您的插件更新更快更容易

关于Capgo

Capgo是一款为Capacitor插件和应用程序设计的实时更新平台。该平台已成功为750个生产应用程序推送超过2,350万次更新 [1]Capgo允许开发人员无需等待应用商店审批即可推送依赖项和code的更新。该平台的更新均经过端到端加密,并符合苹果和安卓的合规标准

Capgo更新功能

Capgo简化了管理插件依赖项的功能:

功能 它做了什么 关键指标
实时更新 context: 首页问题/解决方案部分。角色: 部分或页面标题。见于: 页面premium-support.astro。消息键`ps_help_updates_title` (Ps Help Updates Title)。 在分钟内推送更新
24小时内95%用户更新率 部分更新 434ms average API response time
434ms平均__CAPGO_KEEP_0__响应时间 版本控制 context: Capgo营销网站。角色: 短UI标签或导航项。消息键`version_control` (Version Control)。
频道系统 针对特定用户群组 支持多个发布频道

来源: [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在持续为用户交付方面至关重要!” - Rodrigo Mantica

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

结论

过程审查

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

最佳实践

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

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

使用像 Capgo 这样的实时更新工具可以进一步简化和改进这些实践,通过实时更新使其更容易使用。

Capgo 的好处

Capgo 简化了依赖管理的过程,同时提供了强大的性能。它实现了惊人的 95% 用户在 24 小时内的更新率 并且保持全球 API 的响应时间为 434ms [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.

它使用端到端加密,确保符合苹果和安卓指南的安全更新。对于管理多个插件版本的团队,Capgo 的频道系统允许针对特定用户组的部署。

以下是 __CAPGO_KEEP_0__ 的性能表现: 指标
Global API Response Time 全球 __CAPGO_KEEP_0__ 响应时间
更新成功率 82%
用户更新率(24小时) 95%

继续阅读《在Capacitor插件中添加依赖》

如果您正在使用 《在Capacitor插件中添加依赖》 计划原生插件工作,连接它与 Capgo插件目录 在Capgo插件目录中 Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, 了解__CAPGO_KEEP_0__插件的实现细节 __CAPGO_KEEP_0__插件的实现细节,了解__CAPGO_KEEP_1__插件的实现细节, Ionic Enterprise Plugin Alternatives 为 Ionic Enterprise Plugin Alternatives 的产品工作流程 Capgo 原生构建 为 Capgo 原生构建 的产品工作流程

Capacitor 应用实时更新

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

马丁提供的人类支持

立即开始

最新博客

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