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

  • Android携帯:京セラ android one s2
  • Androidバージョン:7.1.2
  • Android開発環境:Android Studio Flamingo | 2022.2.1
  • Unity: 2022.3.11f1 (64-bit)

Android Studio Flamingoのインストール

Android Studio Flamingoのインストールは、「Android Studio」からダウンロードしてインストールします。今回はコードネーム「 Flamingo」をインストールします。

インストール時に発生したエラーを次に示します。いずれのメッセージも統合開発環境 Eclipse 日本語化プロジェクト「Pleiades」に関連しています。

  • エラーメッセージ「Pleiades 初期化時にエラーが発生しました」
  • 解決策:「Pleiades All in One ダウンロード」(スクロールして「 Pleiades プラグイン・ダウンロード」)からPleiadesをダウンロードして、インストールします。

  • エラーメッセージ「JetBrains系IDEのサポートは廃止されました」
  • 解決策:どうも最新版のPleiadesはダメみたいで、古いバージョン(カットアンドトライ)をダウンロードします。

    「Android Studio などの IntelliJ IDEA ベースの IDE の日本語化は Pleiades ではなく JetBrains 公式言語パックを使用してください。」とあります。

  • エラーメッセージ「AOP起動トランスフォーマーの開始に失敗しました」

  • 解決策:Android Studioを閉じ、フォルダ「C:\Users\ユーザー名\AppData\Roaming\Google\AndroidStudioバージョン」のファイル「studio64.exe.vmoptions」を、次のように「pleiades.jar」に関する記述を見つけコメントアウトして、無効化します。

    # Custom VM options (Generated by Pleiades Installer)
    # See https://pleiades.io/pages/pleiades_jetbrains_manual.html
    #-Xms256m
    #-Xmx1280m
    #-javaagent:C:\Users\ne\AppData\Roaming\Google\AndroidStudio2021.1\jp.sourceforge.mergedoc.pleiades\pleiades.jar
    -Xverify:none
    #-javaagent:C:\Users\ne\AppData\Roaming\Google\AndroidStudio2022.2\jp.sourceforge.mergedoc.pleiades\pleiades.jar
    

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

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

  1. Android Studioで「No Activity」により新規プロジェクト「UnityPlugin2401」を作成します。
  2. File メニューから「 New 」→ 「New Module」を選択し、開いたダイアログで「Android Library」を選択します
  3. ライブラリモジュール「unitylibrary」を作成します。
  4. File メニューから「Project Structure…」を選択します。
  5. 開いたダイアログの左メニュー「Modules」を選択して、最初に作られた「app」を削除します。
  6. 次のフォルダのUnityクラスライブラリ「classes.jar」を取得します。
  7. F:\Program Files\2018.4.26f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar
    

    Unityで作成したゲームをAndroid携帯で実行(2024/01/06)」に従って、Android用にゲームビルドできる環境が構築されていないと、Unityクラスライブラリ「classes.jar」は存在しません。

  8. 次のように、作成したプロジェクトフォルダ内の「libs」にドラッグ&ドロップにより追加します。
  9. モジュールレベル「unitylibrary」のbuild.gradleにUnityクラスライブラリ「classes.jar」を次のように追加し、右上の「Sync Now」ボタンをクリックして、Gradleの変更を適用します。
  10.     compileOnly fileTree(dir: "libs", include: ["*.jar"])
    

    モジュールレベル「unitylibrary」のbuild.gradleを次のようになります。

    
         ・・・
    }
    
    dependencies {
        compileOnly fileTree(dir: 'libs', include: ['*.jar'])
    
        implementation 'androidx.appcompat:appcompat:1.6.1'
    
        implementation 'com.google.android.material:material:1.5.0'
        //implementation 'com.google.android.material:material:1.11.0'
        testImplementation 'junit:junit:4.13.2'
        androidTestImplementation 'androidx.test.ext:junit:1.1.5'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
    }
    

    次のようなエラーが発生したときには、「implementation ‘com.google.android.material:material:1.5.0’」を追加して、「//implementation ‘com.google.android.material:material:1.11.0’」をコメントにすると消えます。

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

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

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

    package com.tomosoft.unitylibrary;
    
    import com.unity3d.player.UnityPlayer;
    
    public class UnityPlugin {
        public static String FromUnity(String str)
        {
            UnityPlayer.UnitySendMessage("UnityTest2401" , "FromAndroid" , "");
            return( "UnityPlugin2401: " + str);
        }
    }
    
  14. viewメニューから「Tool Windows」を選択して「Build Variants」をクリックします。
  15. 表示されたBuild Variants画面でReleaseにします。
  16. Buildメニューから「Make Module ‘UnityPlugin2401.unitylibrary.main’」をクリックし、作成したプラグインをAARファイルとしてビルドします。
  17. ビルドが完了すると、次のように「・・・/UnityPlugin/unitylibrary/build/outputs/aar」にAARファイル「unitylibrary-release.aar」が生成されます。