我有一个小的 Unity3d 项目,可以将 JAR 与它集成。 Android Studio库项目中的(简体)java类如下代码所示:
package com.playsqreen.library.api;
... imports ...
public class PlaysreenAPI {
private static PlayscreenAPI _api;
private PlayscreenAPI(Activity activity) {
this.activity = activity;
}
// static method to create singleton
public static PlayscreenAPI build(Activity activity, String key) {
if (_api == null) {
// post processing something
// before returning instance of this class
_api = new PlayscreenAPI(activity);
}
return _api;
}
public String doEchoThis(String msg) {
return "ECHO: " + msg;
}
}
因此,从Android Studio,我生成我的JAR并将其转储到 ../ MyProject / Assets / Plugins / Android ,从Unity IDE我可以看到如下所示:
然后我创建一个C#脚本,如下所示加载我的java类:
void Start () {
_builder = new StringBuilder();
try
{
_builder.Append(">>> Step 1\n");
AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
if (activityClass != null)
{
_builder.Append(">>> Step 2\n");
AndroidJavaObject activity = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
if (activity != null)
{
_builder.Append(">>> Step 3\n");
AndroidJavaClass apiClass = new AndroidJavaClass("com.playsqreen.library.api.PlayscreenAPI");
if (apiClass != null)
{
_builder.Append(">>> Step 4\n");
object[] args = { activity, secretKey };
api = apiClass.CallStatic<AndroidJavaObject>("build", args);
}
}
}
}
catch (System.Exception e)
{
_builder.Append(e.StackTrace.ToString());
}
}
我在文字用户界面对象中打印 StringBuilder ,以便我捕获我的代码在哪个步骤制动,并且结果是第3步。我的Text UI对象打印出来:
java.lang.ClassNotFoundException:com.playsqreen.library.api.PlayscreenAPI and etc...
我在这里找到的一个帖子建议我使用 Java Decompiler 来检查来自this站点的jar类是否真正包含在Jar中。所以我做了,Java Decompiler显示我的java类确实存在(见下文)
所以我现在真的卡住了。如何从Unity加载我的java类?请帮忙。
感谢。
按照下面的麦角酸建议后,我将自定义jar所需的其余罐子包括在内,见下图。一切都很好:))
答案 0 :(得分:2)
您没有发布在运行时获得的完整错误消息。另外你没有提到你的哪些调试打印得到打印,所以我会尝试提出一些你可以检查的不同问题。希望其中一个可以帮助解决问题:
**无耻的推广:**我提供修复Unity中Android相关问题的服务。 Check it out here,如果您有兴趣:)
答案 1 :(得分:0)
安装最新的JDK版本,然后重试。