Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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
C# AndroidJavaException:java.lang.ClassNotFoundException:未找到类“com.unity3d.player.ReflectionHelper”_C#_Unity3d_Java Native Interface - Fatal编程技术网

C# AndroidJavaException:java.lang.ClassNotFoundException:未找到类“com.unity3d.player.ReflectionHelper”

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

我试图在OnAudioFilterRead函数体中调用一些java方法

这是代码段

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()
}