Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
无法在Android Studio中解析符号webrtc_Android_Android Studio_Java Native Interface_Webrtc_Apprtcdemo - Fatal编程技术网

无法在Android Studio中解析符号webrtc

无法在Android Studio中解析符号webrtc,android,android-studio,java-native-interface,webrtc,apprtcdemo,Android,Android Studio,Java Native Interface,Webrtc,Apprtcdemo,我正在尝试在Android Studio中使用webrtc。文件libjingle\u peerconnection\u so.so放在文件夹src/main/jniLibs/arneabi-v7a中。但当我放入Java文件时: import org.webrtc.DataChannel; 它告诉我无法解析“无法解析符号webrtc”。感谢您的帮助。首先,它的armeabi-v7a,而不是arneabi-v7a,但仅此一点并不能解决您的问题:) 你要走的路很艰难,所以这里有一个小理论: 文件l

我正在尝试在Android Studio中使用webrtc。文件libjingle\u peerconnection\u so.so放在文件夹src/main/jniLibs/arneabi-v7a中。但当我放入Java文件时:

import org.webrtc.DataChannel;

它告诉我无法解析“无法解析符号webrtc”。感谢您的帮助。

首先,它的armeabi-v7a,而不是arneabi-v7a,但仅此一点并不能解决您的问题:)

你要走的路很艰难,所以这里有一个小理论:

文件libjingle\u peerconnection\u so.so本身不足以在Java程序中使用WebRTC。至少,您需要WebRTC核心的Java JNI包装器,它为您提供了使用本机WebRTC代码所需的所有Java类。默认包装器通常是libjingle\u peerconnection.jar,您应该将其放入的“src”文件夹处于同一级别的“libs”文件夹中。因此,项目树应包含以下文件:

  • src/main/jniLibs/armeabi-v7a
  • libs/libjingle_peerconnection.jar
此外,您还需要告诉构建系统在应用程序中构建.jar。在androidstudio中,它通常是Gradle,所以只需将编译文件('libs/libjingle\u peerconnection.jar')添加到依赖项中即可


但是也有一个简单的方法!pristine.io中的好人定期为Android构建WebRTC,并将一些预构建版本发布到Maven repository()。因此,您可以添加compile'io.pristine:libjingle:10839@aar“转到Gradle dependencies,然后继续。不需要添加。所以文件和所有这些。他们的文章是关于这个的吗(注意过时的WebRTC版本,你可以使用10839,例如)

我已经解决了添加libjingle_peerconnection.jar的问题。然而,我不太清楚为什么它没有给我错误“不能解析符号webrtc”,当我只放.jar文件而不放.so文件时。我还发现io.pristine,但我想测试自己编译的文件。如果.jar是一个JNI包装器,那么.so文件是什么?(我对webrtc非常陌生)。谢谢你的教程,非常好的介绍继续这个项目。@ USE168089,让我再解释一下。@ USE168089最初,WebRTC是用C++编写的,默认的Android语言是java。那么,我们如何从java中使用C++呢?java提供了一个称为JNI(java本地接口)的特性,它允许您从java调用C++代码。但是,C++代码必须被正确地格式化,而且不容易为自己创建所有的WebRTC C++代码的“适配器”,java包装器也不是那么简单(参见源代码)。所以开发人员为您做了一切,并将其命名为libjingle_peerconnection.jar和.So。(继续在下一篇评论)@ .USE168089.jar文件是无用的。因此,它调用C++函数,这些函数是在.so文件(Linux .dll等效文件)中编译的。我不确定,但您可能需要Android NDK才能使WebRTC工作。你得试试,或者在谷歌上搜索一下。WebRTC上有大量的资料。关于它的安卓系统的实现并没有太多,但还是足够开始了。祝你好运最佳超短教程:),thnx@alaershov