webRTC 源码 编译

目录

  • 编译环境搭建
  • 代码同步
  • 编译参数配置
  • 源码编译
  • 踩过的问题
  • 总结

一、编译环境搭建

首先,WebRTC源码编译,官方也说明得很清楚,只能在Linux平台进行编译(笔者在mac os 编译过,后来因为缺少arm架构等编译依赖文件放弃,具体参考官网),这里笔者使用时ubutun 14.0.1 + vmware。

当然,这整个过程中,翻墙是不可缺少的,具体可以参考笔者的博客《shadowsocks+proxychains 让ubuntu翻墙飞起来》

(一) 依赖工具环境配置

depot_tools 是同步代码的时候download下来的,但是笔者这里首先先说下依赖文件的环境配置,如果有需要先下载的,请跳转depot_tools工具
** 具体配置 **
1、添加环境变量

    sudo gedit /etc/profile # 针对每个用户

    # 在最后添加下面语句
    export PATH=$PATH:/home/siven/siven/softSetup/depot_tools # depot_tools路径

2、激活生效

    source /etc/profile #重启全局生效,否则只针对该bash有效

3、验证

    which gn # 如果正常打印出gn命令路径,说明成功

二、代码同步

1、同步准备

   mkdir webrtc 
   cd webrtc

2、代码下载

    # 选择android 分支版本
    fetch --nohooks webrtc_android
    # 同步代码
    gclient sync

等待... 源码、第三方库、依赖文件鱼等大概16G左右(虚拟机记得配置存储大于20G喔,默认是20G)

3、依赖环境配置

    # 当代码下载完整
    cd src
    ./build/install-build-deps.sh

这里环境配置也许会遇到以下问题:
** Automatic java installation filed **

 

webrtc-0.png

 

这里直面意思是在配置jdk环境的时候报错。由于ubuntu会自带openjdk 并且版本是1.7.这里webrtc代码打包的jdk环境是java8(控制台信息也建议jdk 8shifou beianz ),所以这里解决方法是卸载原来的openjdk,自己手动安装jdk,而且版本要求是1.8,这里如何配置jdk,笔者就不说明了~

三、编译参数配置

1、参数配置

gn gen out/Debug --args='target_os="android" target_cpu="arm"'

编译不同平台:
To build for ARM64: use target_cpu="arm64"
To build for 32-bit x86: use target_cpu="x86"
To build for 64-bit x64: use target_cpu="x64"

四、源码编译

(一) 全编译

全编译指的是所有源代码的编译,编译文件会稍多,并且编译时间会稍长

ninja -C out/myWebRTC # myWebRTC 指的是编译输出文件夹

(二) 编译Android studio 项目

1、项目编译

ninja -C out/myWebRTC AppRTCMobile

2、gradle 构建文件生成
Android studio 项目是依赖gradle进行构建编译的,在上面步骤编译出来的项目并没有gradle依赖文件,因此还需要进行编译生成

build/android/gradle/generate_gradle.py --output-directory $PWD/out/myWebRTC \
--target "//webrtc/examples:AppRTCMobile" --use-gradle-process-resources \
--split-projects

执行结束后就会在当前 ** out/myWebRTC **目录下出现 gradle文件夹,即工程正在的目录

3、open the project
直接启用Android studio,import 当前gradle生成目录,即 out/myWebRTC/gradle

五、踩过的问题

(一)环境配置踩的坑
** Automatic java installation filed **
上面环境配置已经说明解决方式

(二)工程项目踩的坑
1、编译报错
第一次Import项目的时候,会出现R文件编译报错,如下图所示

webrtc-1.png

** 原因分析 **:
对于java,命名类名、包名、或者是变量名,我们都不可以以系统关键词命名,例如int、interface、class、package等。这里R文件报错地方指向package,所以问题应该定位在Project生成R文件的时候,由于工程包名使用了package关键字,所以编译会出现报错。

** 解决 **:
R文件包名生成跟AndroidManifest.xml有关,因此只需要修改src/build/android/AndroidManifest.xml 下的package name 即可,如下图所示:

webrtc-2.png

2、运行报错
由于读者用的是小米手机,由于系统自带的miui优化,运行安装apk的时候会出下以下报错,如图所示:

webrtc-3.png

** 解决 **:
只需要在IDE设置instant Run,取消Enable Instant Run即可,如图所示:

webrtc-4.png

六、总结

翻墙,翻墙。没有这个前提什么都干不了源码编译时体力活,如果编译成功后就总结下,对自己是很有帮助的,笔者就踩过很多坑总之,多记笔记,多总结吧!

好了,下面开启webrtc之旅吧~



作者:DevSiven
链接:https://www.jianshu.com/p/e2fc5a78bb07
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值