Unity无法在AAR中找到类

时间:2015-04-14 09:33:03

标签: android unity3d

我有一个Unity游戏,它使用包含在AAR(library.aar)中的Android库。但是,我需要访问主要活动的生命周期回调(onPause()onResume(),仅举几例)。

所以我在Android Studio中创建了一个新的库项目(让我们称之为plugin)。我将library.aar导入plugin并将其添加到依赖项中。我通过调用library.aar内的MainActivity内的函数来测试它。此时它不会抛出任何错误。

MainActivity中,我在相应的功能中调用了Library.onActivityResult()Library.onResume()Library.onPause()

接下来,我将classes.jar中的Unity/Editor/Data/PlaybackEngines/androidplayer/release/bin添加到我的plugin项目中。我将JAR添加到依赖项中。我通过尝试子类UnityPlayerActivity来测试它。再次,没有错误。

我将plugin汇编到plugin-debug.aar并将其放入Assets/Plugins/Android。我还创建了一个AndroidManifest.xml我从the Unity Manual获得并将其放在Assets/Plugins内。

我从Unity场景中的按钮调用这些函数,如下所示:

AndroidJavaClass jc = new AndroidJavaClass("com.alxcyl.plugin.MainActivity");
jc.CallStatic("connect");

// "connect" is a static function in the Java class MainActivity containing 
// a short message like so:
// Log.d("My Plugin", "connect() was called");

我构建游戏并在我的Android设备上运行它。如果我单击该按钮,则MyPlugin.connect()被正确调用,因为它会记录单击时应该显示的消息。

我认为生命周期回调被正确调用,但问题是它记录了一个错误说:

I/dalvikvm( 5466): Could not find method com.somecompany.library.Library.onActivityResult, referenced from method com.alxcyl.plugin.MainActivity.onActivityResult
W/dalvikvm( 5466): VFY: unable to resolve virtual method 276: Lcom/somecompany/library/Library;.onActivityResult (IILandroid/content/Intent;)V
I/dalvikvm( 5466): Could not find method com.somecompany.library.Library.onPause, referenced from method com.alxcyl.plugin.MainActivity.onPause
W/dalvikvm( 5466): VFY: unable to resolve virtual method 276: Lcom/somecompany/library/Library;.onPause()V
I/dalvikvm( 5466): Could not find method com.somecompany.library.Library.onResume, referenced from method com.alxcyl.plugin.MainActivity.onResume
W/dalvikvm( 5466): VFY: unable to resolve virtual method 276: Lcom/somecompany/library/Library;.onResume()V
D/MyPlugin( 5466): connect() was called

我不确定是什么原因造成的。当你构建plugin项目时,它构建良好而没有任何错误,但是当你通过Unity访问它时,它不起作用。我尝试在新的Android项目中使用相同的library.aarLibrary.onActivityResult()Library.onPause()Library.onResume()肯定存在且已正确调用。

Unity可以处理包含AAR的AAR吗?有没有解决这个问题?

1 个答案:

答案 0 :(得分:0)

看起来.aar库中缺少包含所有已编译代码的.jar文件。

Unity将自己的.jar文件与所有插件中的所有.jar文件一起编译成一个.dex文件。

在Unity论坛上,您发布了“未找到类”错误;在这里你提到“找不到方法”。无论如何,你的.aar文件似乎有些问题。