メインコンテンツにジャンプ

How to Use AAR Files in Capacitor Plugins

Learn how to integrate AAR files into Capacitor plugins for enhancing your web apps with native Android features through a clear, step-by-step guide.

How to Use AAR Files in Capacitor Plugins

Android機能をあなたの Capacitor app? アプリに組み込む? Capacitor plugins __CAPGO_KEEP_0__ plugins

context: Page/area: Capgo solutions marketing page. Role: Short UI label or navigation item. Seen in: page solutions/webapp-to-mobile.astro. Preserve Capgo product/brand and developer terms exactly. Message key `solutions_webapp_to_mobile_link_plugins` (Solutions Webapp To Mobile Link Plugins).

  • Androidネイティブ機能とクロスプラットフォームWebアプリを組み合わせる方法について説明します。 Androidライブラリのプリパッケージ化されたファイルは、code、リソース、ネイティブファイルを含みます。
  • AARファイルとは? プリパッケージされたAndroidライブラリにcode、リソース、ネイティブファイルが含まれています。
  • 必要なものは? ツールの例 Android Studio, Gradle、および Node.js、適切なプロジェクト設定が必要です。
  • 統合方法は? AAR ファイルを libs, Gradleを設定し、Capacitor プラグインに接続する。

「Capacitor プラグインで使用する AAR ファイルの方法」

  1. 環境を設定してください: Android Studioをインストールし、設定する。
  2. プロジェクトを整理する: プラグインの構造を明確にする: Capacitor プラグイン.
  3. AARファイルを追加する: AARファイルを android/libs Gradle依存関係を更新する。
  4. プラグインcodeを書く: AAR機能をJavaScriptとリンクする: CapacitorのAPI.
  5. 徹底的なテスト: Android Studioのデバッガーを使用して、Smoothな統合を確認する。

このガイドを参考にすると、AARファイルをCapacitorプラグインに組み込むことができます。 これにより、ウェブアプリケーションにネイティブのAndroid機能が利用可能になります。

CapacitorプラグインにAndroidライブラリ(AARファイル)を埋め込む方法 capacitor プラグイン

capacitor

開発環境の設定要件

AARファイルを使用する前に、開発環境を適切に設定して、問題が発生しないようにしてください。

必要なソフトウェア

AARファイルをCapacitorプラグインで使用するには、以下のソフトウェアが必要です。

ソフトウェア 最小バージョン 目的
Android Studio 2022.1.1 以上 Android アプリ開発の主なIDE
Java Kaihatsu Kit 11 以上 Android アプリ開発に必要
Node.js 14.0 以上 For managing Capacitor and npm packages
Gradle 7.3 以上 Androidのビルドツール
Git 2.30以上 バージョン管理とパッケージ管理のために

さらに、次のコンポーネントがあなたのSDKマネージャーに含まれていることを確認してください:

  • Android SDK プラットフォーム 33 (Android 13.0)
  • Android SDK ビルドツール 33.0.0
  • Android SDK コマンドラインツール
  • Android エミュレータ
  • Android SDK プラットフォームツール

プロジェクト設定のステップ

1. 開発環境の初期化

Capgoのプラグインで使用するAARファイルの使い方

my-plugin/
├── android/
│   ├── src/
│   └── build.gradle
├── src/
│   └── definitions.ts
└── package.json

2. Android Studioの設定を変更する

Android Studioを起動し、以下の設定を調整する

  • Gradle JDKのバージョンを11以上に設定する
  • Enable the auto-download feature for Android SDK components.
  • Update your system environment variables with the correct Android SDK path.

3. プラグインの構造を準備する

バージョン管理を設定する android/build.gradle プロジェクトディレクトリでGitを初期化し、不要なファイルを除外するファイルを作成する

android {
    compileSdkVersion 33
    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 33
    }

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

4. バージョン管理用のファイルの設定例

ファイルの設定を更新してAARファイルのサポートを追加する .gitignore Gitの初期化と不要なファイルの除外の設定例 .gitignore:

android/build/
node_modules/
dist/
*.iml
.idea/
.gradle/
local.properties

これらの手順が完了したら、AARファイルを追加する準備が整います。

プラグインにAARファイルを追加する

AARファイルの取得

AARファイルは、第三者製のSDK、カスタムライブラリ、またはMaven依存関係から得られます。ソース、バージョン、目的を記録するREADMEファイルを作成することをお勧めします。 README ファイルの場所 libs ソースタイプ

説明 ベストプラクティス 第三者製のSDK
ベンダーから提供されたプリコンパイルライブラリ ベンダー版のバージョン詳細をREADMEに記載する READMEファイルは、プロジェクトのルートディレクトリ
Androidライブラリのカスタマイズ 自社開発のAndroidモジュール ビルドプロセスをドキュメント化
Maven依存関係 リモートリポジトリから変換 オフラインビルド用にローカルにキャッシュ

AARファイルが用意でき、ドキュメントが完了したら、プラグインを設定してAARファイルを含めることができます。

プラグインファイルの設定

プラグインファイルを整理して、AAR依存関係のスムーズな統合を確保しましょう。ここでは、プラグイン構造の例を示します。

my-plugin/
├── android/
│   ├── libs/        # AAR files with README
│   ├── src/
│   └── build.gradle
├── src/
│   └── definitions.ts
└── package.json
{
    "files": [
        "android/libs/*.aar",
        "android/src/**/*",
        "src/**/*"
    ]
}

AARファイルの配置

AAR機能を有効にするには、次の手順に従ってプラグインのディレクトリにファイルを配置してください。 android/libs プラグインのディレクトリに移動して、以下の手順に従います。

  • 使用する際の明確で一貫した命名形式、例えば libraryname-version.aar.
  • バージョン管理を行うファイルを versions.properties ファイル。例えば:
library1=1.2.3
library2=2.0.0
  • 他の依存関係の dependencies.gradle ファイルを追加します:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar'])
    implementation 'com.example:dependency:1.0.0'
}
  • ベンダー固有のファイルを子ディレクトリに分類することで、管理が容易になります:
android/libs/
├── vendor1/
│   ├── feature.aar
│   └── config.json
└── vendor2/
    ├── module.aar
    └── settings.xml

ベンダー固有のディレクトリ内に設定ファイルを保持することで、組織が維持され、複数のAAR依存関係を扱う際のビルドコンフリクトが回避されます。

Gradle 設定手順

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

build.gradleの更新

To integrate AAR files into your Capacitor plugin, you need to configure Gradle appropriately. Start by adding these repository settings to android/build.gradle:

repositories {
    google()
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

次に、Capacitor プラグインの AAR依存関係を含めます。 dependencies ブロック:

dependencies {
    implementation files('libs/your-library.aar')
    implementation fileTree(dir: 'libs', include: ['**/*.aar'])
    implementation "com.getcapacitor:core:${capacitorVersion}"
    implementation "androidx.appcompat:appcompat:1.6.1"
}

バージョン管理のために、プロジェクトのルートにファイルを作成し、ライブラリのバージョンを定義してください。 gradle.properties AARファイルに付随する追加の依存関係がある場合、次のように宣言してください。

# Library versions
MY_LIBRARY_VERSION=1.2.3
CAPACITOR_VERSION=5.5.0

これらの変更を実施した後、プロジェクトをSyncして適用してください。 android/build.gradle Gradle Syncを実行します。

android {
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 33
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
    }
}

プロジェクトを同步して変更を適用します。

Syncが完了した後、以下を確認してください。

チェックポイント

予想される結果

チェックポイント チェックポイント 一般的な問題
ビルド出力 AAR関連のエラーがない 依存関係が欠落している
ライブラリの解決 AARファイルが正しくリンクされている パス参照が不正
バージョン間の競合 依存関係のバージョンに関する問題がない 互換性のないバージョン

Syncが失敗した場合、設定を確認してください。たとえば、次の設定が有効になっていることを確認してください。

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    lintOptions {
        abortOnError false
    }
}

大きなAARファイルの場合、Gradleのメモリ割り当てを増やす必要があるかもしれません gradle.properties:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m

Syncが正常に完了したら、AARファイルは完全に統合され、テスト用に準備されています。

CapacitorにAAR機能を接続する

AARライブラリのクラスを書く

GradleファイルのSyncが完了したら、AAR機能を接続するためにプラグインクラスを拡張する時間です。このステップはJavaScriptをネイティブのAndroid__CAPGO_KEEP_0__にリンクします。 Plugin class. This step links JavaScript to the native Android code.

@NativePlugin(
    permissions = {
        Manifest.permission.REQUIRED_PERMISSION
    }
)
public class YourPlugin extends Plugin {
    private YourAARLibrary libraryInstance;

    @Override
    public void load() {
        super.load();
        libraryInstance = new YourAARLibrary(getContext());
    }
}

目的

context Purpose 実装に関する注意
背景 Androidアプリのコンテキスト 使用 getContext() プラグインクラスから
設定 ライブラリ設定 プラグインからオプションを渡す
ライフサイクル プラグインの状態管理 オーバーライド load() と handleOnDestroy()

プラグインメソッドの作成

次に、プラグインでメソッドを定義する @PluginMethod アノテーションを使用します。これらのメソッドは、JavaScriptとJava間のデータ交換を処理します。

@PluginMethod
public void performAction(PluginCall call) {
    try {
        // Get data from JavaScript
        String inputData = call.getString("inputKey");

        // Call AAR library method
        YourLibraryResult result = libraryInstance.processData(inputData);

        // Return result to JavaScript
        JSObject ret = new JSObject();
        ret.put("value", result.getValue());
        call.resolve(ret);
    } catch (Exception e) {
        call.reject("Error processing data", e);
    }
}

非同期タスクの場合:

@PluginMethod(returnType = PluginMethod.RETURN_CALLBACK)
public void startContinuousOperation(PluginCall call) {
    call.setKeepAlive(true);

    libraryInstance.setCallback(new LibraryCallback() {
        @Override
        public void onUpdate(String data) {
            JSObject ret = new JSObject();
            ret.put("data", data);
            call.resolve(ret);
        }
    });
}

JavaScript と Java の間で一般的な型は次のように変換されます:

JavaScript の型 Java の型 変換方法
オブジェクト JSObject call.getObject()
配列 JSArray call.getArray()
文字列 文字列 call.getString()
数値 整数/浮動小数点数 call.getInt()/call.getDouble()
真偽値 真偽値 call.getBoolean()

リソースのクリーンアップのために、以下のメソッドをオーバーライドしてください。 handleOnDestroy メソッド:

@Override
protected void handleOnDestroy() {
    if (libraryInstance != null) {
        libraryInstance.cleanup();
        libraryInstance = null;
    }
    super.handleOnDestroy();
}

これらのメソッドを実装した後、ネイティブブリッジは準備が整いました。Android Studioのデバッグ環境で実装をテストして、期待どおりに動作することを確認してください。

テストと問題の修正

デバッグ Android Studio

Android Studio

Android StudioでAARの統合をデバッグするには、プロジェクトのファイルでデバッグモードを有効にしてください。 build.gradle file:

android {
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
        }
    }
}

プラグインのメソッドでブレークポイントを追加してデータフローを追跡し、潜在的な問題を特定する:

@PluginMethod
public void yourMethod(PluginCall call) {
    // Set a breakpoint here to inspect input data
    String inputValue = call.getString("key");
    // Another breakpoint here to check method calls to the AAR
    libraryInstance.someMethod(inputValue);
}

Android Studioのデバッグパネルを使用して、重要な領域を監視する:

デバッグエリア チェックするもの 一般的な問題
ログキャット AARの初期化メッセージ 権限の欠如または不正なコンテキスト
変数 データ型の変換 Null値または型の不一致
スタックトレース メソッド実行フロー 無効なメソッド呼び出しまたはスレッド問題
メモリ リソース使用状況 メモリリーク

デバッグが問題を解決しない場合、次のセクションのトラブルシューティング手順に従ってください。

トラブルシューティング手順

デバッグだけでは十分ではない場合、共通の問題を解決するために使用するステップを使用してください。

1.依存関係の競合

あなたのファイルでバージョン競合を確認します。バージョンを強制して競合を解決します。 build.gradle 2.ネイティブライブラリの欠如

configurations.all {
    resolutionStrategy {
        force 'com.google.android:android:4.1.1.4'
        // Add other forced versions as needed
    }
}

3.依存関係の競合

AARファイルをCapacitorプラグインに統合するには .so 必要なファイルを適切なディレクトリに配置する

  • jniLibs/armeabi-v7a/
  • jniLibs/arm64-v8a/
  • jniLibs/x86/
  • jniLibs/x86_64/

3. マニフェストマージャー問題

マニフェストの競合が発生した場合、問題のあるライブラリを上書きするには、以下の内容をファイルに含める AndroidManifest.xml 4. ランタイムクラッシュとメモリ管理

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="your.plugin.package">
    <uses-sdk tools:overrideLibrary="conflicting.library.package"/>
</manifest>

4. ランタイムクラッシュとメモリ管理

メモリリークを防ぐには、リソースを適切にリリースする。Android Studioのメモリプロファイラーを使用して、ヒープの使用状況を追跡し、リークを特定する

try {
    libraryInstance = new YourAARLibrary(getContext());
} catch (Exception e) {
    Log.e("PluginError", "Failed to initialize library: " + e.getMessage());
    return;
}

概要

Summary

To integrate AAR files into Capacitor plugins, you’ll need to set up the Android environment, place AAR files correctly, configure Gradle accurately, and test thoroughly.

フェーズ

Phase 要件 成功の指標
開発環境の設定 Android Studio 4.0+, Gradle 7.0+ ビルドが正常に完了
AAR統合 ファイルの正しい配置、依存関係の正確さ マニフェストの競合なし
プラグイン開発 プラグインの明確な構造、正確なメソッドマッピング メソッドの実行が予想どおり
テスト デバッグモード有効、効果的なエラーハンドリング 実行時クラッシュなし

基本的な概念をマスターしたら、より高度なテクニックを探索できます。

次のステップ

プラグインを強化するには、以下の点に注目してください。

  • プラグインを強化するには、次の領域に焦点を当ててください:
    パフォーマンス最適化

  • Android Studioのプロファイラーを使用して、メモリ使用量を監視し、リソースが適切にクリーンアップされることを確認してください。
    Android AARファイルの設定をすべてドキュメント化し、APIドキュメントを生成し、Android API 29–34の互換性をテストする。

  • すべてのAAR構成をドキュメント化し、__CAPGO_KEEP_0__ ドキュメントを生成し、Android __CAPGO_KEEP_1__ 29–34 のレベルと互換性をテストしてください。
    メンテナンス戦略

テストを自動化し、バージョン管理でAARバージョンを管理し、変更履歴を維持し、エラー報告を設定して、生産問題を解決するために使用します。

Keep going from How to Use AAR Files in Capacitor Plugins

Capacitorプラグインを使用している場合 How to Use AAR Files in Capacitor Plugins Capacitorプラグインを使用してネイティブプラグインの作業を計画するには、 Capgo プラグインディレクトリ for the product workflow in Capgo Plugin Directory, Capacitor プラグインは Capgo によって提供されます。 Capacitorプラグインの実装詳細については、CapacitorプラグインによってCapgoで実装されます。 Capacitorプラグインの更新 Capacitorプラグインの更新の実装詳細 Capacitorプラグインの代替 Capacitorプラグインの代替の製品ワークフロー Capgo ネイティブビルド Capgo Native Buildsの製品ワークフロー

Live updates for Capacitor apps

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

Capgo Builder / Native Cloud Build

Capgo Builder / Native Cloud Build

Capgo Builder / Native Cloud Build

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