C# AndroidJavaException:java.lang.ClassNotFoundException:未找到类“com.unity3d.player.ReflectionHelper”
我试图在OnAudioFilterRead函数体中调用一些java方法 这是代码段C# AndroidJavaException:java.lang.ClassNotFoundException:未找到类“com.unity3d.player.ReflectionHelper”,c#,unity3d,java-native-interface,C#,Unity3d,Java Native Interface,我试图在OnAudioFilterRead函数体中调用一些java方法 这是代码段 void OnAudioFilterRead(float[] data, int channels) { AndroidJNI.AttachCurrentThread(); if (ok) { if (obj == null) { obj = new AndroidJavaObject("com.xx.aop.media.av.GPU
void OnAudioFilterRead(float[] data, int channels)
{
AndroidJNI.AttachCurrentThread();
if (ok)
{
if (obj == null)
{
obj = new AndroidJavaObject("com.xx.aop.media.av.GPUFrameCapturer");
Debug.Log(obj.Call<bool>("isRecording"));
}
}
}
当我在Android平台上构建apk时
始终遇到此错误
06-13 15:20:51.981 20255-20388/com.MeiTu.XRay E/Unity:
AndroidJavaException:java.lang.ClassNotFoundException:未找到
路径上的类com.unity3d.player.ReflectionHelper:
DexPathList[[directory.],nativeLibraryDirectories=[/system/lib,
/供应商/lib、/system/lib、/vendor/lib]]
java.lang.ClassNotFoundException:在路径:DexPathList[[目录]上未找到类com.unity3d.player.ReflectionHelper
.],NativeLibraryDirectory=[/system/lib,/vendor/lib,/system/lib,
/供应商/库]]
OnAudioFilterRead函数是在另一个线程中调用的,因此看起来您使用了AndroidJNI.AttachCurrentThread以使从另一个线程使用AndroidJavaObject成为可能。您还需要分离它。在OnAudioFilterRead函数的末尾调用AndroidJNI.DetachCurrentThread:
void OnAudioFilterRead(float[] data, int channels)
{
AndroidJNI.AttachCurrentThread();
if (ok)
{
if (obj == null)
{
obj = new AndroidJavaObject("com.xx.aop.media.av.GPUFrameCapturer");
Debug.Log(obj.Call<bool>("isRecording"));
}
}
AndroidJNI.DetachCurrentThread()
}
很可能您的依赖项没有正确声明。很多情况下,这确实是我的解决方案。如果是这样,请不要忘记通过单击答案旁边的复选标记图标来接受答案。将向您演示如何执行此操作。对不起,复选标记图标在哪里。。。我找不到它。
AndroidJavaObject obj;
void Start()
{
obj = new AndroidJavaObject("com.xx.aop.media.av.GPUFrameCapturer");
}
void OnAudioFilterRead(float[] data, int channels)
{
AndroidJNI.AttachCurrentThread();
if (ok)
{
if (obj == null)
{
Debug.Log(obj.Call<bool>("isRecording"));
}
}
AndroidJNI.DetachCurrentThread()
}