Не удалось скомпилировать библиотеку WebRTC для Android

Я пытаюсь скомпилировать собственный стек 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

Я полностью выполнил шаги, описанные в официальном WebRTC Native Development for Android. Эти шаги были выполнены без каких-либо прерываний, и каждый шаг требовал своего времени для завершения. Затем мне нужно установить все зависимости, необходимые для сборки исходного кода.

./build/install-build-deps.sh

Перед компиляцией кода я также проверил конкретную ветку git, чтобы перейти к различным доступным версиям WebRTC, чтобы получить список всех веток с помощью этой команды git.

git branch -r

Я делюсь последними ветками Git:

введите здесь описание изображения


Я пробовал каждую ветку git от branch-heads/60 до branch-heads/m79, и каждая ветка имеет разные проблемы при использовании команд компиляции. Я пробовал эти две процедуры для создания библиотеки, например:


1- Использование инструментов сборки AAR (./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") {
    ^------------------------------------


person Muhammad Usman    schedule 20.04.2020    source источник
comment
Из того, что я вижу, вы получаете определенные ветки. Вы пытались получить основную голову?   -  person Saif Ali    schedule 20.04.2020
comment
Почему бы не использовать готовые версии? реализация 'org.webrtc:google-webrtc:1.0.+'   -  person NixSam    schedule 20.04.2020
comment
На самом деле, я разрабатываю свою собственную библиотеку. Мне нужно внести некоторые изменения в Native Stack. По этой причине я выбрал собственную среду разработки WebRTC.   -  person Muhammad Usman    schedule 20.04.2020


Ответы (1)


Усман, выполните следующие действия, и я смог сгенерировать действительный модуль webrtc aar:

 git checkout origin/master
 gclient revert
 gclient sync

И вы решите свои проблемы. Вы проверяете ветку, которая находится за источником и не имеет там всех зависимостей и модулей, необходимых для сборки вашего libwebrtc.aar

person Saif Ali    schedule 20.04.2020
comment
На самом деле, я работал над branch-heads, так что это было проблемой. Я повторил попытку, используя ветку origin/master, а затем попробовал приведенные выше команды, и это сработало для меня. - person Muhammad Usman; 20.04.2020
comment
В приведенных выше командах у меня работало gclient revert вместо gclient reset. Так что я исправил это, с одной другой ошибкой. - person Muhammad Usman; 20.04.2020