当前位置: 首页 > news >正文

在mac下手动编译迁移的android版webrtc组件

我原先使用的android版webrtc是在linux下编译的,现在因为某些原因需要把整个库迁移到mac下编译。

把代码迁移完后,正常是需要通过gclient sync 重新构建编译环境,但是由于网络限制等方面原因,会导致完成的比较慢。

在摸索一阵后,找到了一种方式可以快速的编译出webrtc,步骤如下:

假设已经有 NDK、depot_tools、ninja,并且可以正常使用了

1.修改 src/build/config/compiler/BUILD.gn

由于NDK提供的clang交叉编译器不支持该选项,所以需要注释掉:

#asmflags = [ "-Wa,-fdebug-compilation-dir,." ]

2.修改 src/build/toolchain/android/BUILD.gn

默认使用的 eu-strip是linux下的elf可执行文件,因此需要修改:

strip = rebase_path("//buildtools/third_party/eu-strip/bin/eu-strip",root_build_dir)
修改为:strip = _tool_prefix + "strip"

3.在src目录下执行gn命令生成ninja编译脚本

clang_base_path:需要设置成 NDK 的编译器目录 /Users/plants/Workspace/Video/android-ndk-r19c/toolchains/llvm/prebuilt/darwin-x86_64/

android_ndk_root:需要设置成 NDK 的安装目录 /Users/plants/Workspace/Video/android-ndk-r19c

custom_toolchain:需要设置成android特定编译器环境 //build/toolchain/android:android_clang_arm64

具体命令行如下:

gn gen out/Release/arm64-v8a --args='is_debug=false target_os="android" target_cpu="arm64" rtc_include_tests=false rtc_build_examples=false proprietary_codecs=true ffmpeg_branding="Chrome" clang_base_path="/Users/plants/Workspace/Video/android-ndk-r19c/toolchains/llvm/prebuilt/darwin-x86_64/" clang_use_chrome_plugins=false android_ndk_root="/Users/plants/Workspace/Video/android-ndk-r19c" custom_toolchain="//build/toolchain/android:android_clang_arm64" android64_ndk_api_level=21'

4.执行编译命令

ninja -C out/Release/armeabi-v7a

这样就可以在不重新同步编译环境的情况下直接编译webrtc组件。

注意:本方式应对的是老版本的webrtc(M75),使用的NDK也是老的r19c,因此对于新版本的webrtc可能不适用。另外我只编译了webrtc中音视频相关的组件,如果编译其它的组件可能还会出现其它问题。

http://www.dtcms.com/a/264857.html

相关文章:

  • 信息论与编码期末重点
  • 板凳-------Mysql cookbook学习 (十一--------2)
  • 代码训练LeetCode(44)螺旋矩阵
  • 电脑一体机,收银机画面显示不全——深入解析 BIOS 配置电脑分辨率——东方仙盟
  • 「ECG信号处理——(20)基于心电和呼吸的因果分析模型」2025年7月2日
  • GC393低功耗双电压比较器:精准、高效的信号处理解决方案
  • Liunx 操作系统笔记4
  • MFC扩展库BCGControlBar Pro v36.2亮点:Ribbon Bar、表单等组件升级
  • Notepad++ 复制宏、编辑宏的方法
  • 微信小程序使用wx.chooseImage上传图片时进行压缩,并添加时间水印
  • HarmonyOS 页面路由Router切换组件导航Navigation
  • (第三篇)HMTL+CSS+JS-新手小白循序渐进案例入门
  • Axure常用交互功能案例-免费
  • 物联网实战:多语言(Java、Go、Rust、C++、C#、Rust)设备接入与数据处理
  • 嵌入式系统内核镜像相关(十)
  • 「日拱一码」015 机器学习常用库——scikit-learn
  • Deep semi-supervised learning for medical image segmentation: A review
  • 《解码人工智能:从理解到应用的变革之旅》
  • 当AR遇上深度学习:实时超声肾脏分割与测量技术全解析
  • Linux操作系统之文件(一):重识IO
  • FastAPI 安装使用教程
  • 通用编码器芯片 L1527产品介绍,低重码率,高安全性433解码芯片
  • 激活向量是什么
  • LCS4110R安全芯片防抄板原理
  • HTML初学者第二天
  • Spring-解决IDEA中无法创建JDK17一下的SpringBoot项目
  • 【计算机网络】补充
  • 04.Vue自定义组件制作详细指南
  • 【数据结构】排序算法:冒泡与快速
  • docker-compose编排saleor