📱
【Unity × Android】.aarプラグインの作成方法
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モジュールを作成
-
Android Studioを起動し、新しいプロジェクトを作成。
- テンプレート:「No Activity」を選択。
- テンプレート:「No Activity」を選択。
-
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"
}
-
compileSdk
とtargetSdk
:
プロジェクトのターゲットSDKを設定します。 -
Kotlin標準ライブラリ:
Kotlinコードを使用する場合に必要です。
2.4 ビルドとUnityプロジェクトへの配置
-
ビルド
-
Android Studioの「Build → Make Project」をクリック。
-
ビルドが成功すると、以下のパスに
.aar
ファイルが生成されます:build/outputs/aar/mylibrary-debug.aar
-
-
Unityへのインポート
-
.aar
ファイルをUnityプロジェクト内の以下のフォルダにコピーします:Assets/Plugins/Android/
-
-
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. 実行と確認
-
Unityでボタンを作成し、
AarPluginWrapper
のメソッドを呼び出します。public class TestPlugin : MonoBehaviour { public void ShowToast() { AarPluginWrapper plugin = new AarPluginWrapper(); plugin.ShowToast("aar plugin call"); } }
-
Androidデバイスでビルドと実行。
- トースト通知が表示されれば成功です。
- トースト通知が表示されれば成功です。
まとめ
項目 | 内容 |
---|---|
用途 | リソースとコードを含むプラグインが必要な場合 |
メリット | リソースとコードを一体化できる |
利用シナリオ | サードパーティSDK統合、リソース使用、カスタムUIなど |
Discussion