Error while building WebRTC for android on Ubuntu

二次信任 提交于 2021-02-17 05:15:16

问题


I am trying to build WebRTC for Android on Ubuntu 16.04. I have followed the steps mentioned at: https://medium.com/@abdularis/how-to-compile-native-webrtc-from-source-for-android-d0bac8e4c933 ( I found similar steps in the other links also)

I checked out the version: branch-heads/m79

I am getting the following error while building the code with the command: python tools_webrtc/android/build_aar.py

ERROR at //build/config/android/internal_rules.gni:3051:7: Assertion failed.
      assert(_is_annotation_processor || _is_java_binary || _has_sources)
      ^-----
See //build/config/android/rules.gni:1489:5: whence it was called.
    java_library_impl(target_name) {
    ^-------------------------------
See //build/config/android/rules.gni:1844:5: whence it was called.
    java_library(target_name) {
    ^--------------------------
See //webrtc.gni:850:5: whence it was called.
    android_library(target_name) {
    ^-----------------------------
See //rtc_base/BUILD.gn:1359:3: whence it was called.
  rtc_android_library("base_java") {
  ^---------------------------------
See //BUILD.gn:423:7: which caused the file to be included.
      "rtc_base",
      ^---------
Traceback (most recent call last):
  File "build_aar.py", line 234, in <module>
    sys.exit(main())
  File "build_aar.py", line 230, in main
    args.build_dir, args.extra_gn_switches, args.extra_ninja_switches)
  File "build_aar.py", line 210, in BuildAar
    extra_ninja_switches)
  File "build_aar.py", line 166, in Build
    _RunGN(gn_args_list)
  File "build_aar.py", line 93, in _RunGN
    subprocess.check_call(cmd)
  File "/usr/lib/python2.7/subprocess.py", line 541, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/usr/bin/python', '/home/architsinha/work/WebRTC_Android/src/third_party/depot_tools/gn.py', 'gen', '/tmp/tmpuxZSnM/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

If I try the other method by running the command gn gen out/Debug --args='target_os="android" target_cpu="arm"' I get the following error:

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") {
    ^------------------------------------

How can I fix this error? Is there some step which I have missed?


回答1:


I was stuck with the same issues. While working on the following commands make sure you're using the same(only-1) tab of Linux terminal for WebRTC Native Development.

First of all, make sure of the following things that you have already installed, if not then use these commands to do that:

 - sudo add-apt-repository ppa:openjdk-r/ppa
 - sudo apt-get install openjdk-8-jdk
 - sudo apt-get install pkg-config
 - sudo apt-get update

After that, start these following steps one by one. Every step takes its own time based on the machine specs and internet speed, so make sure every step is completed without interruption.

1- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

2- export PATH="$PATH:${HOME}/depot_tools"

3- mkdir webrtc_android

3.1- cd webrtc_android

4- fetch --nohooks webrtc_android

5- gclient sync

6- cd src/

7- ./build/install-build-deps.sh

8- git branch -r

9- git checkout origin/master

# To check you're in origin/master branch
10- git branch

11- tools_webrtc/android/build_aar.py

It turns out that you will end up with the compilation and building of libwebrtc.aar in the webrtc_android/src/ directory.

Now, If you have already completed your task to step-7 with the branch-heads/m79, then
select the branch of origin/master instead of m79. To do that try these following steps:

Make sure you're in this directory webrtc_android/src/:

 - git checkout origin/master
 # To make sure you're using origin/master
 - git branch
 - gclient revert
 - gclient sync
 - tools_webrtc/android/build_aar.py

And hopefully, you will have your issues sorted. Currently, You are checking out a branch that is behind the origin/master and doesn't have all dependencies and modules over there which are necessary to build your libwebrtc.aar.


Now, if you tried with these both procedures to build the WebRTC such as:

1- Using AAR Build Tools (./tools_webrtc/android/build_aar.py)

2- Using Manual Compilation (gn gen out/Debug --args='target_os="android" target_cpu="arm"')

2.1- Compiling (ninja -C out/Debug)

Both procedures will work.





回答2:


It can take a few attempts but running gclient sync a few times worked for me.

It can take a very long time to get all of the files and if it is interrupted it won't retrieve them.



来源:https://stackoverflow.com/questions/60408122/error-while-building-webrtc-for-android-on-ubuntu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!