📱

【Unity × Android】.aarプラグインの作成方法

2025/01/12に公開

UnityでAndroidのネイティブ機能を利用する際、Androidネイティブプラグインを作成する方法は主に以下の4種類があります。

  • Android Library プロジェクト(.aarプラグイン)
  • JARプラグイン
  • Android用ネイティブプラグイン(C/C++利用)
  • Java/Kotlinのソースプラグイン

それぞれの方法に特徴がありますが、本記事では特に利用頻度が高く、リソース(画像やレイアウトXMLなど)を含むことができる .aarプラグインで、トースト通知を表示する簡単なサンプルを例に解説します。


1. .aarプラグインとは?

  • .aar(Android Archive)は、Kotlin/Javaコードとリソース(XMLレイアウトや画像など)をひとまとめにしたライブラリ形式。
  • メリット
    • リソースを含むプラグインが作成可能: UI関連やカスタムビューを持つプラグインに適している。
    • 高度な機能に対応: サードパーティSDKを含む複雑なプラグインの作成に向いている。
    • Unityとの統合が容易: .aar ファイルをUnityの Assets/Plugins/Android フォルダに配置するだけで利用可能。

2. 作成手順

2.1 Android StudioでLibraryモジュールを作成

  1. Android Studioを起動し、新しいプロジェクトを作成。

    • テンプレート:「No Activity」を選択。
  2. Libraryモジュールを追加:

    • 「File → New → New Module」を選択。
    • 「Android Library」を選択し、モジュール名を入力(例: mylibrary)。

2.2 Kotlinコードの実装

以下のコードを作成し、トースト通知を表示するメソッドを実装します。

Kotlinコード例

package com.example.mylibrary

import android.content.Context
import android.widget.Toast

class MyAarPlugin {
    fun showToast(context: Context, message: String) {
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
    }
}
  • package com.example.mylibrary:
    パッケージ名はUnity側から呼び出す際に必要です。
  • showToast:
    AndroidのToastを利用して通知を表示するメソッド。

2.3 Gradle設定

ライブラリモジュールの build.gradle ファイルを環境に合わせて、以下のように編集します。

build.gradle

android {
    namespace 'com.example.mylibrary'
    compileSdk 35

    defaultConfig {
        minSdk 24

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }

    ....

}

dependencies {

    ....
    androidTestImplementation libs.androidx.espresso.core

    // Kotlin のパッケージ
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.10"
}
  • compileSdktargetSdk:
    プロジェクトのターゲットSDKを設定します。
  • Kotlin標準ライブラリ:
    Kotlinコードを使用する場合に必要です。

2.4 ビルドとUnityプロジェクトへの配置

  1. ビルド

    • Android Studioの「Build → Make Project」をクリック。

    • ビルドが成功すると、以下のパスに .aar ファイルが生成されます:

      build/outputs/aar/mylibrary-debug.aar
      

  2. Unityへのインポート

    • .aar ファイルをUnityプロジェクト内の以下のフォルダにコピーします:

      Assets/Plugins/Android/
      
  3. Unityでリインポート

    • Unityエディタで「Assets → Reimport All」を実行。

3. Unity側での呼び出し

UnityからAndroidのネイティブ機能を呼び出すために、C#でラッパークラスを作成します。

C#コード例

public class AarPluginWrapper
{
    public static void ShowToast(string message)
    {
        using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            using (AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
            {

                if (currentActivity == null)
                {
                    Debug.LogError("currentActivity is null!");
                    return;
                }

                using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.example.mylibrary.MyAarPlugin"))
                {
                    if (pluginClass == null)
                    {
                        Debug.LogError("pluginClass is null!");
                        return;
                    }

                    pluginClass.CallStatic("showToast", currentActivity, message);
                }
            }
        }
    }
}

4. 実行と確認

  1. Unityでボタンを作成し、AarPluginWrapper のメソッドを呼び出します。

    public class TestPlugin : MonoBehaviour
    {
        public void ShowToast()
        {
            AarPluginWrapper plugin = new AarPluginWrapper();
            plugin.ShowToast("aar plugin call");
        }
    }
    
  2. Androidデバイスでビルドと実行

    • トースト通知が表示されれば成功です。

まとめ

項目 内容
用途 リソースとコードを含むプラグインが必要な場合
メリット リソースとコードを一体化できる
利用シナリオ サードパーティSDK統合、リソース使用、カスタムUIなど

Discussion