android - 如何从 Unity 中使用不同的包标识符和 Java 中的包名称访问 jar 文件?

标签 android unity3d

我已经在 java jar 中为 unity 创建了一个插件。

在 Java 中,我的包名称是 com.android.test

在 Unity 中,我的 Bundle Identifier 是 com.android.test。这适用于下面的代码。

但是如果我在 Unity 中将我的 Bundle Identifier 更改为 com.android.test2,下面的代码会抛出异常 Class not Found: com.android.test2.myplugin .

有什么方法可以访问包名与 Unity Bundle Identifier 名称不同的 jar 文件?

这是我访问 Jar 的统一 C# 代码:

static IntPtr cls_Activity;
static IntPtr fid_Activity;
static IntPtr obj_Activity;
static IntPtr cls_OurAppNameActivityClass;
static IntPtr startAdsMethod;

cls_Activity = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer");
fid_Activity = AndroidJNI.GetStaticFieldID(cls_Activity, "currentActivity", "Landroid/app/Activity;");
obj_Activity = AndroidJNI.GetStaticObjectField(cls_Activity, fid_Activity);

cls_OurAppNameActivityClass = AndroidJNI.FindClass("com/android/test/myplugin");
            startAdsMethod = AndroidJNI.GetMethodID(cls_OurAppNameActivityClass, "Instantiate", "()V");


  if (AndroidJNI.IsInstanceOf(obj_Activity, cls_OurAppNameActivityClass) != false)
    {
       Debug.Log("Activity IS a OurAppNameActivity");               
       jvalue[] myArray = new jvalue[1];
       AndroidJNI.CallVoidMethod(obj_Activity, startAdsMethod, myArray);
       Debug.Log("Activity Leaving a OurAppNameActivity");
    }

最佳答案

您的包名在 unity 和 java 中必须相同,否则它们将无法访问。

关于android - 如何从 Unity 中使用不同的包标识符和 Java 中的包名称访问 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10650931/

相关文章:

Android:从资源创建 NinePatchDrawable

Android ListView 容忍度

java - 自动完成编辑文本

c# - Unity - 绘制角色跟随的路径

unity3d - 建筑物的墙壁碰撞器

unity3d - 在unity3d C#中获取下一个兄弟游戏对象(转换)方法

Android PreferenceScreen 两行标题

java - Android HTTP 连接

c# - 通过纹理偏移滚动 2D/3D 背景

c# - 将c#中的JSON数组反序列化为列表