Compilación Android de WebRTC

prefacio

En las notas de estudio anteriores sobre WebRTC, el autor registró principalmente conocimientos teóricos, como varios protocolos. Aunque hay sospechas de hablar sobre papel y desvanes en el aire, el autor piensa que se trata más de afilar cuchillos y no de cortar verduras por error.Con algún sustento teórico, podemos ir más allá en la práctica más adelante. Hagamos un poco de práctica hoy, intentemos compilar la versión Android de WebRTC...

El contenido de este artículo proviene principalmente del sitio web oficial WebRTC Android Native compilation tutorial https://webrtc.github.io/webrtc-org/native -código/android/

Entorno del compilador

Para compilar con éxito al mismo tiempo, el autor eligió un host en la nube de Ubuntu que está más cerca del entorno del tutorial del sitio web oficial.

Tenga en cuenta que compilar requiere Internet accesible por razones bien conocidas, ya sabe...

El tutorial del sitio web oficial dice que la versión de Android solo admite la compilación en Linux, pero también noté que hay información en Internet sobre cómo compilar la versión de Android en Mac OS, pero no lo he probado, por lo que no estoy seguro de si puede hacerlo. compilarse con éxito en Mac OS, pero el autor cree que si realiza una compilación cruzada y reproduce 6, probablemente no sea un problema.

Construyamos las herramientas relevantes necesarias para la compilación:

1. Instalacióndepot_tools
 

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

# 配置环境变量 HOME一般是自带的环境变量,注意要用depot_tools的绝对路径
export PATH=$PATH:${HOME}/depot_tools

2. Si la herramienta de detección se instaló correctamente

fetch --help

Cuando usé fetch --helpel comando de detección, descubrí que no hubo respuesta durante mucho tiempo y no hubo salida en la consola. Me pregunté si había un problema con el entorno que configuré, y luego descubrí que fue exitoso. después de esperar mucho tiempo Si no hay salida o no hay mensaje de error al fetch --helpejecutar Cree en ti mismo, no te subestimes...

Si se muestra el siguiente contenido, depot_toolsla configuración es exitosa:
 

Pasos de compilación

1. Descarga el código fuente

# 新建目录
mkdir WebRTC
# 进入目录
cd WebRTC
# 下载webRTC android源码
fetch --nohooks webrtc_android
# 同步
gclient sync

Debido a que el proyecto es enorme, puede llevar mucho tiempo, así que puedo preparar una taza de café temporalmente...

2. Dependencias de instalación

cd src
./build/install-build-deps.sh
./build/install-build-deps-android.sh

3. Compilar

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

ninja -C out/Debug

Toma mucho tiempo compilar, y puedo ir a preparar una taza de café nuevamente...

producto compilado

Una vez completada la compilación, entramos en out/Debugel directorio y vemos muchos archivos y carpetas. Dios mío, con tantas salidas, ¿cuál es la biblioteca que quiero?

A continuación, analicemos a la inversa, qué archivo de biblioteca realmente necesitamos usar:

Vimos en el tutorial en el sitio web oficial que Google ha compilado una biblioteca para nosotros, y podemos importarla directamente en Android Studio: 1. Se implementation 'org.webrtc:google-webrtc:1.0.+'


encuentra la biblioteca de destino, creamos un nuevo proyecto de Android Studio y luego importamos esta biblioteca. No lo hagas, empaquétalo en un APK, arrastra este APK a Android Studio y mira qué hay en el directorio lib. Así es libjingle_peerconnection_so.so, esto es todo. Podemos out/Debugencontrar esta biblioteca en el directorio, y se puede encontrar, por lo que libjingle_peerconnection_so.soes una de las bibliotecas de destino que debemos usar.
 

2. Localización del paquete jar de destino Podemos verificar las clases de API en el External Librariesdirectorio izquierdo de Android Studio y luego analizamos los paquetes jar relacionados en el directorio para ver si las clases relacionadas en el paquete jar son consistentes con las clases en el paquete Si es consistente, el envase en tarro es el producto que necesitamos.org.webrtc:google-webrtc:1.0.+out/Debugorg.webrtc:google-webrtc:1.0.+
 

Después del análisis, encontramos que el paquete jar que necesitamos está en out/Debug/lib.java/sdk/android/libwebrtc.jarel directorio.

expandir

Todavía hay muchas aplicaciones en el directorio del producto compilado out/Debug, y muchas de las funciones de la aplicación se pueden ver aproximadamente a través del nombre, como audio_codec_speed_tests_apk, webrtc_perf_tests_apketc. Si está interesado en la comunicación, puede intentar instalar estas aplicaciones en su teléfono móvil para ver qué tienen estos apks.Tal función.

Dado que hay estimaciones de apk y ejemplos de código de muestra relacionados, sabemos que WrbRTC es un proyecto muy grande que contiene muchos submódulos, como adquisición de audio y video, reducción de ruido de audio, etc. Si no necesitamos todas las funciones de WebRTC en el desarrollo real, pero solo queremos usar uno de sus módulos funcionales, deberíamos poder consultar este ejemplo para encontrar pistas... Por supuesto, esto es solo una suposición del autor.

. . . aún no practicado

problemas encontrados

Encontré un error al compilar gn command not found. Esto se debe principalmente a que exportlas variables de entorno establecidas por el comando son temporales. Cuando se cierra la ventana de la consola, debe restablecerla, es decir, simplemente ejecútela. Por supuesto, preste atención $ export PATH="$PATH:${HOME}/depot_tools"a la depot_toolsque descargado.ruta .

Autor: Thought Awakening
Original  WebRTC Android Compilation- Nuggets

 

★La tarjeta de presentación al final del artículo puede recibir materiales de aprendizaje de desarrollo de audio y video de forma gratuita, incluidos (FFmpeg, webRTC, rtmp, hls, rtsp, ffplay, srs) y hojas de ruta de aprendizaje de audio y video, etc.

¡vea abajo!

 

Supongo que te gusta

Origin blog.csdn.net/yinshipin007/article/details/132380273
Recomendado
Clasificación