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

・Android携帯:SH-52E Android14(API34) bleバージョン5.3
・Android開発環境:Android Studio Otter 2 Feature Drop | 2025.2.2Androidバージョン:7.1.2
・Unity: Unity 6 (6000.3.2f1)

Unityによりネイティブプラグインの実装

新規プロジェクト「PluginTest2601」を作成してネイティブプラグイン「unitylibrary-release.aar」を実装して、Android携帯にゲームオブジェクトを転送して実行します。

  1. Unity Hubで、つぎのように設定し、新規プロジェクト「PluginTest2601」を作成します。
  2. Unityエディタでにフォルダ「Assets/Plugins/Android」を作成し、作成したネイティブプラグイン「unitylibrary-release.aar」をドラッグ&ドロップします。
  3. Hierarchyタブの「+」→「 UI」からText、Buttonを作成します。
  4. それぞれのx,y位置を調整します。
  5. Assetsメニューから「Create」→「Scripting」→「Monobehaviour Script」を選択して、次に示すスクリプト「UnityTest2601.cs」を作成します。
    • 21行目で作成したネイティブプラグイン「unitylibrary-release.aar」を呼び出します。
    • 23行目でネイティブプラグイン「FromUnity」関数を呼び出し、戻り値をAndroid携帯に表示します。カウンタ「counter」値が更新されて表示されます。

    UnityTest2601.cs

    using UnityEngine;
    using UnityEngine.UI;
      
    public class UnityTest2601 : MonoBehaviour
    {
        [SerializeField] Text txtMessage;
        [SerializeField] Button btnAndroid;
        int counter = 0;
      
        void Start()
        {
            btnAndroid.onClick.AddListener(CallAndroidPlugin);
            txtMessage.text = "初期値";
        }
      
        /// <summary>
        /// ボタンが押されたらプラグインを呼ぶ
        /// </summary>
        public void CallAndroidPlugin()
        {
            using (AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.tomosoft.unitylibrary.UnityPlugin"))
            {
                txtMessage.text = androidJavaClass.CallStatic<string>("FromUnity", counter.ToString());
                counter++;
            }
        }
      
        /// <summary>
        /// プラグイン側からUnityを呼ぶ
        /// </summary>
        public void FromAndroid(string str)
        {
    //        txtMessage.text += str;
        }
    }
  6. 作成したスクリプト「UnityTest2601.cs」をゲームオブジェクト「Canvas」にドラッグ&ドロップし、inspectorタブのスクリプト「UnityTest2401.cs」の「Txt Message」「Btn Android」それぞれにHierarchyタブの「Text(TMP)」、「Button」をドラッグ&ドロップします。
  7. Fileメニューから「Build Profiles」を選択します。表示された「Build Profiles」画面で「Android」を選択して「Switch Platform」ボタンをクリックします。
  8. Android携帯とパソコンとをUSBケーブルで接続し、Android端末側の「設定」により「開発者向けオプション」で「USBデバッグ」をチェックします。
  9. 「Build And Run」ボタンをクリックし、作成した「apk」ファイルを保存するファイル名「PluginTest2601」を設定します。保存するフォルダは、Assetsフォルダと同じ階層に「 Builds 」フォルダを新規作成します。
  10. これによりapkファイルの作成とAndroid携帯への書き込みが行われます。Android携帯への書き込みが終了すると、次の画面が表示され、「Button」ボタンをクリックするごとに数値がカウントアップします。

再生中(Play Mode)の画面の色を変更

再生中/停止中を判断するために、「Playmode Tint(プレイモード時の色変更)」設定します。

  1. Edit > Preferences
  2. Colors を選択
  3. Playmode Tint を「赤」や「緑」など極端な色に変える
  4. 再生ボタンを押す。次のように画面の色が変わります。

Build時のエラー

エラーメッセージ:Task :launcher:processReleaseMainManifest FAILED

Execution failed for task ':launcher:processReleaseMainManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 25 cannot be smaller than version 30 declared in library [:unitylibrary-release:] C:\Users\ne\.gradle\caches\8.13\transforms\cce45760066a0fbbceb6eff39c7f3dd2\transformed\jetified-unitylibrary-release\AndroidManifest.xml as the library might be using APIs not available in 25
  	Suggestion: use a compatible library with a minSdk of at most 25,
  		or increase this project's minSdk version to at least 30,
  		or use tools:overrideLibrary="com.tomosoft.unitylibrary" to force usage (may lead to runtime failures)

原因:「Unity本体の設定(minSdkVersion 25)」と「自作したJavaライブラリの設定(minSdkVersion 30)」が食い違っています。

処置:

  1. Unityのメニューから Edit > Project Settings を開きます。
  2. Player > Android設定(スマホのアイコン) > Other Settings を開きます。
  3. Identification セクションにある Minimum API Level を探します。
  4. これを Android 11.0 (API level 30) に変更します。

Logcatの設定方法

Android実機のログ(Debug.Log や Java側の Log.d)を確認するために、Unityエディタに内蔵されている Android Logcatパッケージを使用します。

Unityエディタ内に専用のウィンドウを表示させるために、上部メニューの Window > Analysis > Android Logcat を選択します。


次のような、Android Logcat が表示されます。

もし項目がない場合は、Window > Package Manager から Android Logcat を検索してインストールしてください。

自分のアプリのログだけを見つけるために、次のようにフィルターを設定します。。

  • Package Name: 自分のアプリのパッケージ名(例: com.tomosoft.unitylibrary など)を選択すると、そのアプリのログだけが表示されます。
  • Search (Filter): 検索窓に「Unity 」 と入力すると、C#の Debug.Log だけを抽出できます。Java側で独自のタグを付けている場合は、そのタグ名で検索します。