使用$ 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方法。應該真的沒有什麼不同。 –