webrtc for android

最近编译webrtc for android遇到好多问题,记下来以后备用。

  1. depot_tools
    这个需要另外下载,有一点要注意的是里面的python文件都是python2的,也就是说如果你装了python3,那么默认python命令会用python3来执行,这个时候最开始我手打了命令(把gclient 变成 python2 /path/to/depot_tools/gclient.py),当然这样是很费力的。并且后来发现一些inner command还是会用到python2,所以这种方法就不可行了。
    解决方法:最后是在/usr/bin里面把python这个soft link指向python2就可以了。

  2. jdk
    webrtc for android 需要oracle的jdk来编译,openjdk的话在设置环境的时候会报错(source ./build/envsetup.sh的时候)。如果你是使用的openjdk的话,其实也好办,只要下一个oraclejdk然后设置一个JAVA_HOME并且把bin加到path里面就可以了。

    export JAVA_HOME=/path/to/oraclejdk
    export PATH=$JAVA_HOME/bin:$PATH
    另外特别要注意的看下面那条:-)

  3. jdk版本
    如果你使用了jdk1.7,那么恭喜你中奖了。如果你再运行app的时候遇到classdefnotfound这种错误,那么说明你还真的中奖了。。
    解决方法是:换用jdk1.6来编译webrtc,这样才能在android跑起来(至少现在要用1.6才行)

  4. 什么?java VM出错了?
    如果你是刚刚下的jdk1.6,并且下的是bin的那个然后解压缩的。。很有可能遇到

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

解决方法见:http://www.cnblogs.com/chenguangyu/archive/2009/11/06/1597706.html
为了防止连接失效,那么也可以看下面:

linux安装jdk出现java/lang/NoClassDefFoundError: java/lang/Object错误的解决方案
近日在redhat上安装jdk出现了一个莫名的错误
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
辛苦google了一个小时,终于找到了解决方案
首先要确认的是环境变量的设置是否正确
相信大家都是很细心的,这方面如果有错误也会很容易发现
然而还有一个隐蔽的地方也会产生上述的错误
就是lib和jre/lib文件夹中的rt和tools是否是打包后的形式
如果发现rt.pack 和 tools.pack 那么多半问题就出在这里
解决方法也很简单,只要将相应文件解压成rt.jar 和 tools.jar
可以使用bin里面的unpack200工具
如:unpack200 rt.pack rt.jar
解压后java -version应该就没有问题了~~

在这里再次感谢作者!

  1. 使用模拟器的时候找不到GPU
    这个比较好解决,在模拟器的选项里面打开“使用host gpu”
  2. No config chosen!
    上面的5也可能会产生这个问题:

    FATAL EXCEPTION: GLThread 8
    java.lang.IllegalArgumentException: No config chosen
    at >android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:771)
    at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916)
    at >android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246)
    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)

这就要改源代码了。在源代码里面搜索一下view,然后找到感觉像是GLSurfaceView的之后,在其new之后加入xxxView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

目前就遇到这么多问题,以后继续添加。

你可能感兴趣的:(webrtc for android)