最近编译webrtc for android遇到好多问题,记下来以后备用。
-
depot_tools 这个需要另外下载,有一点要注意的是里面的python文件都是python2的,也就是说如果你装了python3,那么默认python命令会用python3来执行,这个时候最开始我手打了命令(把gclient 变成 python2 /path/to/depot_tools/gclient.py),当然这样是很费力的。并且后来发现一些inner command还是会用到python2,所以这种方法就不可行了。
解决方法:最后是在/usr/bin里面把python这个soft link指向python2就可以了。 -
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 另外特别要注意的看下面那条:-)
-
jdk版本 如果你使用了jdk1.7,那么恭喜你中奖了。如果你再运行app的时候遇到classdefnotfound这种错误,那么说明你还真的中奖了。。
解决方法是:换用jdk1.6来编译webrtc,这样才能在android跑起来(至少现在要用1.6才行) -
什么?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应该就没有问题了~~
在这里再次感谢作者!
- 使用模拟器的时候找不到GPU 这个比较好解决,在模拟器的选项里面打开“使用host gpu”
- 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)
<strike>这就要改源代码了。在源代码里面搜索一下view,然后找到感觉像是GLSurfaceView的之后,在其new之后加入xxxView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);</strike>
目前就遇到这么多问题,以后继续添加。