如何解决使用 Twilio JavaI420Buffer (Kotlin) 时出现 UnsatisfiedLinkError 说明视频 Android SDK 版本
说明
尝试通过以下调用分配 JavaI420Buffer 时:
tvi.webrtc.JavaI420Buffer.allocate(width,height)
我收到以下错误:
java.lang.UnsatisfiedLinkError: No implementation found for java.nio.ByteBuffer tvi.webrtc.JniCommon.nativeAllocateByteBuffer(int) (tried Java_tvi_webrtc_JniCommon_nativeAllocateByteBuffer and Java_tvi_webrtc_JniCommon_nativeAllocateByteBuffer__I)
at tvi.webrtc.JniCommon.nativeAllocateByteBuffer(Native Method)
at tvi.webrtc.JavaI420Buffer.allocate(JavaI420Buffer.java:87)
at dji.ux.beta.core.widget.fpv.FPVWidget$onSurfaceTextureAvailable$yuvDataListener$1.onYuvDataReceived(FPVWidget.kt:417)
在此错误之前,我还得到:
2021-05-28 08:31:27.367 15131-15131/? I/tvi.webrtc.Logging: NativeLibrary: Loading native library: jingle_peerconnection_so
2021-05-28 08:31:27.367 15131-15131/? I/tvi.webrtc.Logging: NativeLibrary: Loading library: jingle_peerconnection_so
2021-05-28 08:31:27.369 15131-15131/? E/tvi.webrtc.Logging: NativeLibrary: Failed to load native library: jingle_peerconnection_so
2021-05-28 08:31:27.369 15131-15131/? E/tvi.webrtc.Logging: NativeLibrary: java.lang.UnsatisfiedLinkError: dlopen failed: library "libjingle_peerconnection_so.so" not found
2021-05-28 08:31:27.370 15131-15131/? E/tvi.webrtc.Logging: NativeLibrary: java.lang.UnsatisfiedLinkError: dlopen failed: library "libjingle_peerconnection_so.so" not found
奇怪的是,如果我声明使用官方 org.webrtc 库 (implementation 'org.webrtc:google-webrtc:1.0.32006'
),那么分配字节缓冲区的本机调用成功。
视频 Android SDK 版本
com.twilio:video-android-ktx:6.3.0
解决方法
首先,当你在 kotlin 中加载原生代码时,它应该是这样的:
companion object {
init {
System.loadLibrary("jingle_peerconnection")
}
}
在 Java 中
static {
System.loadLibrary("jingle_peerconnection")
}
第二,根据您的错误,"library "libjingle_peerconnection_so.so" not found => 您必须在“main -> java -> libs”中添加相关的 Android 架构文件夹"文件夹
Example : main -> java -> libs -> x86 -> .so file
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。