在 webrtc android 中调用时出错

Posted

技术标签:

【中文标题】在 webrtc android 中调用时出错【英文标题】:Getting error while calling in webrtc android 【发布时间】:2015-10-19 02:48:01 【问题描述】:

我在调用 webrtc android 应用程序时崩溃了。

这是我的错误日志:-

07-28 18:53:10.787: E/art(11672): JNI CallStaticBooleanMethodV called with pending exception 'java.lang.NoSuchMethodError' thrown in java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String):-2
07-28 18:53:10.815: A/art(11672): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: jmethodID was NULL
07-28 18:53:10.815: A/art(11672): art/runtime/check_jni.cc:65]     in call to CallStaticBooleanMethodV
07-28 18:53:10.816: A/art(11672): art/runtime/check_jni.cc:65]     from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String)


07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   native: #12 pc 000778b9  /data/dalvik-cache/arm/system@framework@boot.oat (Java_java_lang_Runtime_nativeLoad__Ljava_lang_String_2Ljava_lang_ClassLoader_2Ljava_lang_String_2+152)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at java.lang.Runtime.nativeLoad(Native method)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at java.lang.Runtime.doLoad(Runtime.java:428)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   - locked <0x0dd4b515> (a java.lang.Runtime)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at java.lang.Runtime.loadLibrary(Runtime.java:369)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at java.lang.System.loadLibrary(System.java:989)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at org.webrtc.PeerConnectionFactory.<clinit>(PeerConnectionFactory.java:39)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at org.webrtc.PeerConnectionFactory.initializeAndroidGlobals(Native method)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at org.appspot.apprtc.PeerConnectionClient.createPeerConnectionFactoryInternal(PeerConnectionClient.java:186)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at org.appspot.apprtc.PeerConnectionClient.access$12(PeerConnectionClient.java:180)
07-28 18:53:10.822: A/art(11672): art/runtime/check_jni.cc:65]   at org.appspot.apprtc.PeerConnectionClient$1.run(PeerConnectionClient.java:147)

似乎无法加载 libjingle_peerconnection_so ?

任何帮助将不胜感激。 谢谢

【问题讨论】:

我需要在 android.mk 文件中定义什么吗? 【参考方案1】:

按照此处的说明进行操作:https://webrtc.org/native-code/android/

我不是在编译调试版本,我是这样编译发布的:

gn gen out/Release --args='is_debug=false target_os="android" target_cpu="arm"'

+

ninja -C out/Release

现在你有了发布文件。您需要libjingle_peerconnection_so.so,您可以在 out/Release 文件夹(大约 4.5MB)中找到它,然后将其放入 armeabi-v7a 文件夹中。

您还需要libwebrtc.jar,您可以在同一文件夹中找到它。如果找不到,请使用

构建它

ninja -C out/Release libwebrtc

将 libwebrtc.jar 放入 libs 文件夹。

现在,要发布应用程序,您需要更新 proguard。这就是我必须放入 proguard.cfg 的内容:

# webrtc
-dontwarn com.google.devtools.build.android.desugar.runtime.*
-keep class org.webrtc.**  *; 

这对我有用,我希望它对你有用。

【讨论】:

以上是关于在 webrtc android 中调用时出错的主要内容,如果未能解决你的问题,请参考以下文章

为 Android 编译 Web RTC 时出错

为 iOS 构建 webrtc 库时出错

Android在调用WebRTC时将音频录制到文件控制器

在 android 中调用 httpget 时出错(检索 google 方向)

由于未定义对具有 std::string 的方法的引用,链接 webrtc-native 时出错

android webview 加载webrtc视频通信的问题