![](/img/trans.png)
[英]AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityInterstitialAdCallback
[英]AndroidJavaException: java.lang.ClassNotFoundException: Didn't find class “com.unity3d.player.ReflectionHelper”
我試圖在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:在路徑:DexPathList [[directory“。”],nativeLibraryDirectories = [/ system / lib,/ vendor / lib,/ system /下,找不到類“ com.unity3d.player.ReflectionHelper” lib,/ vendor / lib]]
java.lang.ClassNotFoundException:在路徑:DexPathList [[directory“。”],nativeLibraryDirectories = [/ system / lib,/ vendor / lib,/ system / lib,上找不到類“ com.unity3d.player.ReflectionHelper” /供應商/ LIB]]
OnAudioFilterRead
函數在另一個Thread
被調用,因此您似乎使用了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()
}
如果這不起作用,請在OnAudioFilterRead
函數(例如Start
或Awake
函數)之外初始化AndroidJavaObject
,然后在上述OnAudioFilterRead
函數中使用它。
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()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.