无法为Android编译WebRTC库

3

我正试图编译WebRTC原生堆栈以构建libwebrtc.aar,但不幸的是无法理解出现了什么问题。


系统信息:

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic
Java-Version:   OpenJDK-8-JDK
Python-Version: Python 2.7.17

我按照Android WebRTC原生开发官方文档提供的完整步骤进行操作。这些步骤无任何中断已经全部完成,每个步骤都花费了一定时间才完成。接下来,我需要安装构建源代码所需的所有依赖项。

./build/install-build-deps.sh

在编译代码之前,我还使用了以下 git 命令来检出特定的分支以进入不同可用的 WebRTC 版本,并列出所有分支。
git branch -r

我在分享最新的Git分支:

在此输入图片描述


我已经尝试了从branch-heads/60branch-heads/m79的每个git分支,但是在使用编译命令时每个分支都存在不同的问题。我已经尝试了以下两个过程来构建该库:


1- 使用AAR Build工具 (./tools_webrtc/android/build_aar.py)

confu@ubuntu:~/webrtc_android/src$ tools_webrtc/android/build_aar.py
INFO:root:Building: armeabi-v7a
ERROR at //webrtc.gni:591:7: Can't load input file.
      absl_include_config,
      ^------------------
Unable to load:
  /home/confu/webrtc_android/src/third_party/abseil-cpp/BUILD.gn
I also checked in the secondary tree for:
  /home/confu/webrtc_android/src/build/secondary/third_party/abseil-cpp/BUILD.gn
Traceback (most recent call last):
  File "tools_webrtc/android/build_aar.py", line 234, in <module>
    sys.exit(main())
  File "tools_webrtc/android/build_aar.py", line 230, in main
    args.build_dir, args.extra_gn_switches, args.extra_ninja_switches)
  File "tools_webrtc/android/build_aar.py", line 210, in BuildAar
    extra_ninja_switches)
  File "tools_webrtc/android/build_aar.py", line 166, in Build
    _RunGN(gn_args_list)
  File "tools_webrtc/android/build_aar.py", line 93, in _RunGN
    subprocess.check_call(cmd)
  File "/usr/lib/python2.7/subprocess.py", line 190, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/usr/bin/python', '/home/confu/webrtc_android/src/third_party/depot_tools/gn.py', 'gen', '/tmp/tmp1JDmHL/armeabi-v7a', '--args=arm_version=7 use_goma=false target_cpu="arm" is_component_build=false is_debug=false rtc_include_tests=false target_os="android"']' returned non-zero exit status 1

2- 使用手动编译 (gn gen out/Debug --args='target_os="android" target_cpu="arm"')

confu@ubuntu:~/webrtc_android/src$ gn gen out/Debug --args='target_os="android" target_cpu="arm64"'
ERROR at //BUILD.gn:648:20: Assignment had no effect.
      java_files = [
                   ^
You set the variable "java_files" here and it was unused before it went
out of scope.
See //BUILD.gn:647:5: whence it was called.
    junit_binary("android_junit_tests") {
    ^------------------------------------


从我看到的情况来看,你正在获取特定的分支,你尝试过获取主干吗? - Saif Ali
为什么不使用预构建版本呢? implementation 'org.webrtc:google-webrtc:1.0.+' - NixSam
实际上,我正在开发自己的库。我必须在本地堆栈内进行一些更改。因此,我选择了WebRTC本地开发环境。 - Muhammad Usman Bashir
1个回答

3

Usman,按照以下步骤操作后,我成功生成了一个有效的webrtc aar模块:

 git checkout origin/master
 gclient revert
 gclient sync

并且你的问题将被解决。你正在查看一个落后于原始代码分支的版本,并且缺少构建 libwebrtc.aar 所需的所有依赖项和模块。


1
实际上,我正在处理“branch-heads”,所以那是个问题。我已经尝试使用“origin/master”分支重新尝试,并且我已经尝试了上述命令,这对我起作用了。 - Muhammad Usman Bashir
2
在上述命令中,对我而言使用 gclient revert 而非 gclient reset 才有效。因此我已经进行了更正,但还有另一个错误。 - Muhammad Usman Bashir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接