使用$ adb logcat -s "app"
和$ adb logcat -s Unity
在Terminal
看着我调试消息一次,我已经注意到,我的JAR
文件只咨询一次当我第一建立我的应用程序Android
( .APK
)但每次以后,我只是run
我的应用程序,插件JAR
文件没有咨询。这是为什么?统一的应用程序调用的jar只在第一款Android构建
public class MyClass
{
public static void MyMethod()
{
Log.i("app", "MyMethod entered");
if (blah)
{
Log.d("app", "If entered");
}
else
{
Log.e("app", "Else entered");
}
blah
}
}
使用$ adb logcat -s "app"
我看到Log.i
和Log.d
消息,并在下面我Unity3D
代码,我看到使用$ adb logcat -s Unity
public class MyUnityClass : MonoBehaviour
{
public static void MyUnityMethod()
{
#if UNITY_ANDROID
try
{
using (AndroidJavaObject androidJavaObject = new AndroidJavaObject("com.example.unityplugin.MyClass"))
{
if (androidJavaObject != null)
{
androidJavaObject.CallStatic("MyMethod");
Debug.Log("androidJavaObject != null SUCCESS!");
}
}
}
catch (Exception e)
{
Debug.LogException(e);
}
#endif
}
}
每次我在平板电脑上运行我的应用程序的Debug.Log
消息,脚本调用MyUnityMethod()
然后调用我的JAR
的MyMethod()
,但在第一次构建之后,我再也看不到这些调试消息了......
“你必须使用AndroidJavaClass而不是AndroidJavaObject” - 我不认为这是正确的。您可以使用AndroidJavaObject实例调用静态方法。 –
是的,可以根据doc示例使用'AndroidJavaObject',但我个人也遇到了问题。当我切换到“AndroidJavaClass”时,问题就消失了。我从此一直使用'AndroidJavaClass'。这就是为什么我鼓励OP使用对我有用的东西。 – Programmer
AndroidJavaClass是从AndroidJavaObject派生的。此外,它没有定义任何新的方法(构造函数除外)。当你调用CallStatic时,你正在有效地调用AndroidJavaObject方法。应该真的没有什么不同。 –