Android Studioによりネイティブプラグインを作成し、Unityに作成したネイティブプラグインを実装し、新規プロジェクトを作成して、Android携帯にネイティブプラグインとゲームオブジェクトを転送して実行します。このブログは「Unityで使用するAndroidのネイティブプラグインの作成(2026/01/16) – Unity編」に続きます。古いバージョンでのネイティブプラグインの作成は、「Unityで使用するAndroidのネイティブプラグインの作成(2024/01/06) – Android編」に示します。

  • Android開発環境:Android Studio Otter 2 Feature Drop | 2025.2.2

Android Studioによるネイティブプラグインの作成

Android Studioにより次の手順でネイティブプラグイン「unitylibrary-release.aar」を作成します。

  1. Android Studioで「No Activity」を選択します。
  2. 新規プロジェクト「UnityPlugin2601」を作成します。
  3. 作成した新規プロジェクト「UnityPlugin2601」を選択して、File メニューから「 New 」→ 「New Module」を選択し、開いたダイアログで「Android Library」を選択します。
  4. ライブラリモジュール「unitylibrary」を作成します。
  5. File メニューから「Project Structure…」を選択します。
  6. 開いたダイアログの左メニュー「Modules」を選択して、最初に作られた「app」を削除します。
  7. Unityがインストールされている次のフォルダのUnityクラスライブラリ「classes.jar」を取得します。Unityクラスライブラリ「classes.jar」が見つからない場合は、「 Unityで作成したゲームをAndroid携帯で実行(2026/01/16)」に示すAndroid用にゲームビルドできる環境が構築されていることを確認します。
  8. 「...6000.3.2f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes」
    
  9. 次のように、作成したプロジェクトフォルダ内の「libs」にドラッグ&ドロップにより追加します。
  10. モジュールレベル「unitylibrary」のbuild.gradleにUnityクラスライブラリ「classes.jar」を次のように追加し、右上の「Sync Now」ボタンをクリックして、Gradleの変更を適用します。
  11. compileOnly(files("libs/classes.jar"))
  12. モジュールレベル「unitylibrary」のbuild.gradle.ktsを次のようになります。
  13. 
    ・・・
    
    dependencies {
        compileOnly(files("libs/classes.jar"))
        implementation(libs.appcompat)
        implementation(libs.material)
        testImplementation(libs.junit)
        androidTestImplementation(libs.ext.junit)
        androidTestImplementation(libs.espresso.core)
    }
    

    エラーになる場合は、設定ファイルが build.gradle (Groovy) ではなく build.gradle.kts (Kotlin Script) になっていることを確認します。

  14. 次のようにJavaクラスを新規追加します。名称を「UnityPlugin」、パッケージ名を「com.tomosoft.unitylibrary」「UnityPlugin2601\unitylibrary\src\main\java\com\tomosoft\unitylibrary」とします。
  15. 作成した「UnityPlugin 」に次のコードを記述します。
  16.  
    シーンに存在するオブジェクト「UnityTest」のメソッド「FromAndroid」にメッセージ「”UnityTest”+パラメータとして受けとった文字列」を送信します。

     

    UnitySendMessage("GameObject名","関数名","引数");

    メッセージを介して渡せるのは文字列だけなので、複雑な結果を渡したい場合にはシリアライズ/デシリアライズする必要があります。

    package com.tomosoft.unitylibrary;
    
    import com.unity3d.player.UnityPlayer;
    
    public class UnityPlugin {
        // C/C++ からも呼び出しやすい static メソッドラッパ
        public static String sendToUnity(String gameObject, String method, String message) {
            UnityPlayer.UnitySendMessage(gameObject, method, message);
            return "UnityPlugin2601: " + message;
        }
    }
    
  17. viewメニューから「Tool Windows」を選択して「Build Variants」をクリックします。
  18. 表示されたBuild Variants画面でReleaseにします。
  19. Buildメニューから「Assemble Selected Modules」をクリックし、作成したプラグインをAARファイルとしてビルドします。
  20. Android Studio Flamingo では「Make Module ‘UnityPlugin2401.unitylibrary.main’」になっていましたが、「Assemble Selected Modules」になっています。これは、新しいUI「IntelliJ New UI」やGradleの仕様変更に伴うため。

  21. ビルドが完了すると、次のように「・・・/UnityPlugin/unitylibrary/build/outputs/aar」にAARファイル「unitylibrary-release.aar」が生成されます。