Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在com.unity3d.player中找不到UnityPlayerPractivity类_Java_Android_Unity3d_Plugins - Fatal编程技术网

Java 在com.unity3d.player中找不到UnityPlayerPractivity类

Java 在com.unity3d.player中找不到UnityPlayerPractivity类,java,android,unity3d,plugins,Java,Android,Unity3d,Plugins,我正在尝试为我的Unity游戏创建一个Android插件。我看了很多教程(大多数都是基于eclipse的过时教程),也阅读了文档。我使用的是Unity 2019.3.0f6。我想用UnityPlayerPractivity扩展我在Android Studio项目中的主要活动 我不明白结尾行是什么意思“找到文件,并将classes.jar添加到Unity用于编译新活动的类路径中。编译活动源文件并将其打包到jar或AAR包中,然后将其复制到项目文件夹中” 我知道PlaybackEngines/An

我正在尝试为我的Unity游戏创建一个Android插件。我看了很多教程(大多数都是基于eclipse的过时教程),也阅读了文档。我使用的是Unity 2019.3.0f6。我想用UnityPlayerPractivity扩展我在Android Studio项目中的主要活动

我不明白结尾行是什么意思“
找到文件,并将classes.jar添加到Unity用于编译新活动的类路径中。编译活动源文件并将其打包到jar或AAR包中,然后将其复制到项目文件夹中

我知道PlaybackEngines/AndroidPlayer/variances/mono或il2cpp/Development或Release/classes/的classes.jar中不存在UnityPlayerPractivity,因此我无法导入com.unity3d.player.UnityPlayerPractivity;我只能导入UnityPlayer和IUnityPlayerLifecycleEvents。我还想了解在此上下文中什么是UnityPlayer类和IUnityPlayerLifecycleEvents

但是UnityPlayerPractivity.java可在C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\src\com\unity3d\player上获得

如何将其添加到Unity3d库或classes.jar中。甚至导入它来扩展我的主要活动。我不明白我做错了什么。
我正在使用Android Studio,虽然我是新手。

别担心,为unity制作Android插件一开始可能会有点混乱,如果你没有任何Android经验,情况会更糟

一些提示:

  • 项目目录结构应该是:
    Assets/Plugins/Android
    (它是 重要的是,我一直在为这种愚蠢而挣扎)
  • app/libs
    中的AndroidStudio项目中插入
    classes.jar
  • 插入外部依赖项(如果正在使用),如 “support-v4-24.1.1”转换为
    Android/libs
要在AndroidStudio上创建插件,您需要创建一个库(此步骤是从活动创建它):

  • 在渐变上删除ID线
  • 在同一文件上,将
    .implementation
    更改为
    .library
要重新编译插件,请执行以下操作:

  • 重建AndroidStudio解决方案

  • 转到AndroidStudio解决方案…
    app\build\outputs\aar
    获取
    .aar
    文件

  • 复制并粘贴,将扩展名从
    .aar
    更改为
    .zip
    .rar
  • 打开修改后的文件并提取2项:

    • classes.jar
      (这是另一个classes.jar,与存储在AndroidStudio项目的app/libs中的不同)
    • AndroidManifest.xml
  • 将这些文件复制到
    Assets/Plugins/Android
    (请记住,项目目录结构很重要!)


  • 您可以下载
    classes.jar
    文件(第一个)从我的或你命名的路径
    D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes\Classes.jar

    关于如何制作原生Android插件并融入Unity 3D,有一个非常棒的教程和伴随的youtube视频


    我也遇到了同样的情况,经过一番搜索,我发现您应该将它复制到您的项目中。在我的机器上,该类位于
    “…unity安装路径…\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player”

    不过,我认为回避使用
    unityplayerpractive
    的新方法完全值得注意

  • 创建一个新模块,例如:将其命名为“UnityActivity”
  • 添加classes.jar,它可以在unity安装文件夹中找到,作为“CompileOnly”方法中的依赖项
  • 将中的“UnityPlayerPractivity”源代码添加到UnityActivity模块中
  • 在“CompileOnly”方法中将新模块作为依赖项添加到“Your Module”

  • 现在,您可以从UnityPlayerPractivity创建CustomActivity扩展。我理解你的解释,但我的问题是为什么UnityPlayerPractivity类不能直接进入我的classes.jar…/PlaybackEngines/AndroidPlayer/variances/mono/Development/classes/我刚才也读了这篇文章。看起来不错,我想实现的是,打开一个现有的android活动,专门实现这个项目作为插件,这样我就可以在运行时给我的unity游戏用户一些whatsapp标签。我知道这听起来很有野心,但你能给我一些指导我应该如何实现我的目标。啊,那么UnityPlayerPractivity现在与classes.jar分开了。真烦人。我想知道他们为什么要改变这一点?