首页 > 解决方案 > 检测游戏是否在安卓模拟器中运行

问题描述

有什么方法可以知道游戏是在模拟器应用程序还是真实设备中运行的?

像一些应用程序VirtualXposed是 android 设备的虚拟模拟器。此类应用程序允许用户在其设备上以不同的标识多次安装游戏/应用程序。

我想知道有什么方法可以识别我的游戏/应用程序是在模拟器中运行还是在 unity3d 中的物理设备中运行?

就像是 :

if(isemulator)
   {
       dosomething();
   }

标签: c#androidunity3demulationvirtual

解决方案


这并不容易,因为那里有很多模拟器。这篇文章的答案说你可以用它Build.FINGERPRINT.contains("generic")来做到这一点。

您可以使用类将 Java 代码移植到 Unity 中的 C#,AndroidJavaClass而无需构建 Java 插件。以下是 C# 中的移植版本:

public bool IsEmulator()
{
    AndroidJavaClass osBuild;
    osBuild = new AndroidJavaClass("android.os.Build");
    string fingerPrint = osBuild.GetStatic<string>("FINGERPRINT");
    return fingerPrint.Contains("generic");
}

要确保这涵盖了大多数模拟器,请使用android-emulator-detector插件。这个插件似乎经过严格测试并检测到大多数模拟器。您可以使用AndroidJavaClass它与它进行通信,并UnityPlayer.UnitySendMessage在 C# 中对您的 Unity 代码进行回调。


推荐阅读