Unityで使用するAndroidのネイティブプラグインの作成」でAndroidネイティブプラグインを使用してゲームアプリを作成しました。今回は、Android携帯上で動作しているゲームアプリをデバッグするために、「Android Device Monitor」を使用します。

  • Android携帯:京セラ android one s2
  • Androidバージョン:7.1.2
  • Android開発環境:Android Studio 4.0
  • Unity: 2018.4.26f1 (64-bit)
  • Android Device Monitorバージョン:25.2.2

Android Device Monitorの設定

Android Device Monitorは、「Android-sdk-tool」の次に示すディレクトより、「\Android-sdk-tools\tools\monitor.bat」を実行すると起動します。

Android Device Monitorが起動すると次の画面が表示されます。Android携帯がUSBで接続され、開発可能状態になっているとデバイスとして画面に表示されます。

AndroidネイティブプラグインとUnity C#スクリプトの作成

Androidネイティブプラグインプロジェクト「UnityPluginDbg」とゲームアプリプロジェクト「PluginDebug」を作成して、Unityでゲームアプリとして作成します。詳細については「Unityで使用するAndroidのネイティブプラグインの作成」を参照してください。Unity C#スクリプトは「Main Camera」に埋め込みました。

Unity C#スクリプト「UnityDebug.cs」のUpdate関数からAndroidネイティブプラグイン「UnityPluginDbg.java」を呼び出し、呼び出されたFromUnity関数が、”UnityTest”と受け取った文字列を組み合わせてUpdate関数に戻します。

UnityPluginDbg.java

package com.tomosoft.unitydbg;

//import com.unity3d.player.UnityPlayer;
import android.util.Log;

public class UnityPluginDbg {
    public static String FromUnity(String str)
    {
        Log.d("FromUnity",str);

//        UnityPlayer.UnitySendMessage("UnityTest" , "" , "");
        return( "UnityPlugin: " + str);
    }
}

UnityDebug.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UnityDebug : MonoBehaviour
{
    private static string JAVA_CLASS_NAME = "com.tomosoft.unitydbg.UnityPluginDbg";
    int counter = 0;

    // Start is called before the first frame update
    void Start()
    {
        UnityEngine.Debug.LogWarning("start");
        using (AndroidJavaClass androidJavaClass = new AndroidJavaClass(JAVA_CLASS_NAME))
        {
            string text = androidJavaClass.CallStatic<string>("FromUnity", counter.ToString());
            UnityEngine.Debug.LogWarning(text);
            counter++;
        }
    }

    // Update is called once per frame
    void Update()
    {
        UnityEngine.Debug.LogWarning("Update 1xxx");
        using (AndroidJavaClass androidJavaClass = new AndroidJavaClass(JAVA_CLASS_NAME))
        {
            string text = androidJavaClass.CallStatic<string>("FromUnity", counter.ToString());
            UnityEngine.Debug.LogWarning(text);
            counter++;
        }
    }
}

Android携帯で作成したゲームアプリの実行

Unityで作ったゲームアプリのログだけが表示されるようにフィルタを作成します。Android Device Monitor画面左下の「Saved Filter」の横の緑色のプラスボタンをクリックし、次のように設定します。

Unityで作成したゲームアプリを転送して実行すると、次のようにUnityの「Debug.LogWarning」関数やAndroid Studioの「Log.d」関数で作成したメッセージがAndroid Device Monitorの画面に表示されます。ネイティブプラグインからのデバッグ情報はTagが「FromUnity」で青色文字で表示されます。