Integrar WebRTC en iOS
En está ocasión vamos a describir todo el proceso necesario para integrar WebRTC (quizá el estándar de comunicaciones en tiempo real online del futuro) para iOS de una forma sencilla y usando herramientas open source. Partiremos desde la descarga de las herramientas necesarias desde sus repositorios, su configuración y su uso para llegar hasta el fichero binario que integraremos en nuestro proyecto. Además, obtendremos un binario con soporte para todas las arquitecturas disponibles (armv7, arm64, i386 y x86_64).
También nos centraremos en la necesidad que nos surgió de necesitar una versión específica de WebRTC y de que proceso hay que seguir para lograr descargar y compilar dicha versión con compatibilidad para todas las arquitecturas. De este modo podremos probar y debuggear la aplicación en todos los dispositivos, incluido el simulador y también cumpliremos con la obligatoriedad de dar soporte para la arquitectura arm64 exigida en la App Store.
Tras leer la documentación oficial y seguir sus indicaciones te darás cuenta de que el proceso solo te genera la librería con soporte para una única arquitectura (especificada a lo largo de las indicaciones), lo que supondrá que tengas que realizar todo el proceso tantas veces como arquitecturas necesites para después unirlas en un único binario.
Para solventar este ‘pequeño’ inconveniente decidimos buscar una alternativa que simplificara todo este proceso. Tras varias pruebas con resultados bastante distintos, nos decantamos por usar unas herramientas concretas que nos simplificaran el proceso de generar distintas versiones, de este modo seremos mas ágiles a la hora de compilar nuevas versiones.
Compilación de WebRTC para iOS
- Para poder crear los binarios para iOS / Mac OS X necesitaremos un ordenador con Mac OS X, no es necesario que esté actualizado a la última versión.
- Durante el proceso tendremos la opción de configurar el tipo de binario que queremos generar (Debug, Realease, etc.) y en caso de necesitar una revisión antigua, podremos especificarla.
Compilar la última revisión
Para comenzar será necesario descargar los scripts publicados en GitHub que nos ayudaran durante todo el proceso. WebRTC-Build-Scripts.
Una ver finalizada la descarga, nos situaremos en la carpeta raíz del proyecto y añadiremos las variables de entorno necesarias mediante el comando:
source ios/build.sh
También tendremos que especificar que tipo binarios necesitamos, por lo que declararemos las siguientes variables en nuestro .bash_profile para simplificar aún mas el proceso.
WEBRTC_DEBUG=false WEBRTC_PROFILE=false WEBRTC_RELEASE=true
Tras seleccionar los binarios que necesitamos, actualizaremos nuestras variables de entorno para que se tengan en cuenta nuestros últimos cambios.
source ~/.bash_profile
Una vez declarados los binarios que necesitamos y actualizadas nuestras variables de entorno únicamente tenemos que ejecutar un comando más, el que se encargará de descargar todo el repositorio oficial de WebRTC y compilarlo para generar los binarios seleccionados.
dance
Al ejecutar el proceso nos advierte de que puede durar cierto tiempo, por lo que no hay que impacientarse.
Compilar una revisión específica
Para compilar una revisión específica debemos conocer el número de revisión del repositorio de SVN y el SHA1 del commit del repositorio de GIT. En ambos repositorios podremos recorrer todo el historial del commits para buscar el que nos interese.
Tras conocer ambos parámetros simplemente ejecutaremos el comando para actualizar el contenido a la revisión que especifiquemos.
update2revision GIT_SHA1
Una vez finalizado todo el proceso nos tocará compilar la librería para generar los binarios correspondientes de esa revisión. Igualmente, necesitamos tener declaradas las variables de entorno que hemos comentado anteriormente.
Por lo tanto, una vez declaradas las variables lanzamos el comando que generará nuestros binarios.
build_webrtc
Es un proceso que tarda bastante, sobre todo en ordenadores poco potentes.
Atento al proceso de compilación..
Es importante estar atento a los logs que se lanzan durante la compilación, sobre todo hasta que se genera el primer binario de forma correcta, ya que en caso de encontrar un error es recomendable parar el proceso para evitar que se generen binarios corruptos.
Uno de los errores mas habituales esta relacionado con el número de la revisión. Este error se da cuando se trata de recoger el número de la revisión del repositorio de SVN, que en ciertas situaciones no se puede acceder a él.
Para solventar esto, únicamente hay que añadir el número de revisión en el script para forzarle a usar ese número de revisión para etiquetar los binarios y que todo se ejecute correctamente.
Para ello añadimos en la línea 285:
WEBRTC_REVISION=`get_revision_number` WEBRTC_REVISION=NUESTRA_REVISION # Especificar la revisión if [ "$WEBRTC_DEBUG" = true ] ; then
Sustituyendo ‘NUESTRA_REVISIÓN’ por el numero de revisión que vayamos a usar.
Cuando finalize el proceso no tenemos que olvidarnos de eliminar la línea de código que hemos añadido.
Con estos pasos obtendremos usa serie de binarios en función de cada arquitectura y el que contendrá todas en el mismo (libWebRTC-REVISION-arm-intel-Release.a).
En el siguiente post desarrollaremos el proceso de integrar este binario que hemos generado en un proyecto de Xcode con Cordova, donde mostraremos los pasos necesarios para tener un proyecto básico y funcional de WebRTC con Cordova para iOS.
Queremos tu opinión :)