remote_ios_feature

en Tutoriales, UE4

Compilación remota iOS usando UE4 (Parte 2)

Un breve tutorial explicando como configurar y montar un entorno de desarrollo para compilar y empaquetar para iOS de manera remota en Unreal Engine 4 (v4.22+), para realizar pruebas, sin invertir dinero ni tiempo en la licencia de desarrollador para iOS.

Creando los archivos de aprovisinamiento
Configuración remota del proyecto para iOS
Mobileprovision tester

remote_development_network

Configurando la máquina de compilación remota (Mac)

Perfil de usuario

El usuario de la máquina debe estar protegido mediante contraseña (el control remoto por SSH no funcionará sin no es así). El nombre de usuario no debe contener espacios ni caracteres especiales.

En Preferencias de sistema > Compartir

mac_system_preferences

Debemos tener activos.

  • Compartir Archivos
  • Sessión remota
  • Administración remota.
mac_sharing

RSync

Rsync es una herramienta utilizada por Unreal Engine para transferir y sincronizar archivos de manera eficiente entre un equipo y un disco externo a traves de una red (comparando las fechas de modificación y los tamaños de los archivos).

Antes de ponernos a configurar el proyecto de UE4 tenemos que configurar Rsync en la máquina Mac.

Tenemos que crear un archivo rsync.plist en /Library/LaunchDaemons
Nos aseguraremos de que los permisos de este archivo sean -rw-r--r-- y copiaremos dentro el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Disabled</key>
        <false/>
        <key>Label</key>
        <string>rsync</string>
        <key>Program</key>
        <string>/usr/bin/rsync</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/rsync</string>
                <string>--daemon</string>
        </array>
        <key>inetdCompatibility</key>
        <dict>
                <key>Wait</key>
                <false/>
        </dict>
		<key>Sockets</key>
		<dict>
			<key>Listeners</key>
			<dict>
				<key>SockServiceName</key>
				<string>rsync</string>
				<key>SockType</key>
				<string>stream</string>
			</dict>
		</dict>
</dict>
</plist>

…y un archivo rsyncd.conf en /etc/
Comprobaremos tambien sus permisos rw-r–r– y le añadimos:

[root]
path = /
hosts allow = 192.168.1.0/24
uid = root
gid = wheel
read only = false
comment = Root volume

La linea de Hosts contiene los rangos de direccion ip, separados por comas, de las máquinas que podrán usar esta máquina Mac para las build remotas. Nosotros tenemos todas las máquinas en una red local con ip 192.168.1.x

Para comprobar la carga del módulo podemos ejecutar en un Terminal:

sudo launchctl load /Library/LaunchDaemons/rsync.plist

Finalmente reiniciamos la máquina Mac.

Configurando la máquina del proyecto UE4 (Windows)

iTunes

El desarrollo para IOS de UE4 ahora requiere iTunes 12 o superior, por lo tanto necesitamos descargar e instalar la versión para escritorio de iTunes.

Hacemos scroll hasta la frase Looking for other version? y hacemos click en Windows

itunes_download

Y download iTunes for Windows

itunes_win_download

Si después de la instalación UE4 continua diciendo que iTunes no está instalado tendremos que abrir el editor de registro de Windows y comprobar si nos falta la entrada necesaria para UE4.

Abrimos regedit y nos vamos a HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apple Inc.\Apple Mobile Device Support\Shared

itunes_regedit

Necesitamos una entrada MobileDeviceDLL con la ruta a MobileDevice.dll, crearemos un nuevo Valor de cadena si no tenemos esta entrada en el registro.

Esta .dll puede encontrarse en C:\Program Files\Common Files\Apple\Mobile Device Support después de la instalación de iTunes

mobiledevice_path

DeltaCopy

Para poder usar RSync en plataforma Windows necesitamos instalar DeltaCopy
Ejecutamos el DeltaC.exe y lo configuramos.

  • Profile Name: Debe ser el mismo que el usuario de la máquina Mac.
  • Server IP: La dirección IP de la máquina Mac
  • Directory Name: root
win_delta_copy

Ahora ya podemos empezar a configurar el proyecto de Unreal Engine 4 para poder utilizar la compilación y empaquetado remoto para iOS

En el menu superior Edit > Project settings

project_settings

En la sección Platforms > iOS

ios_project_settings

Mobile Provision > Hacemos clik en el botón Import Provision

ios_import_provision

Seleccionamos el archivo .mobileprovision creado en el tutorial anterios y Abrir

import_provision_file

Después hacemos click en el botón Import Certificate

ios_import_certificate

Seleccionamos el archivo .p12 y Abrir

import_certificate_file

Durante el proceso de importación del certificado un cuadro de dialogo aparecerá pidiendonos la contraseña del certificado. Tendremos que poner la contraseña que utilizamos en el anterior tutorial a la hora de exportar el certificado.

Ahora el sección Mobile Provision deben aparecer dos entradas nuevas con estado Válido.

ios_ue4_mobile_provision

Tenemos que comprobar que el Bundle Identifier comienza con el nombre de la compañia utilizada en el archivo de aprovisionamiento

ios_bundle_identifier

Nos desplazamos hasta la sección Build > desplegamos Remote Build Options y rellenamos los siguientes campos:

  • Remote Server Name: La direccion a la máquina Mac
  • RSync User Name: El nombre del perfil utilizado en DeltaCopy
  • Delta Copy Install Path: Ruta al ejecutable del programa DeltaCopy
win_remote_build_options

Ahora hacemos click en el botón Generate SSH Key. Este proceso conectará a almáquina Mac para generar la clve SSH y la copiará de vuelta a una carpeta en nuestra máquina Windows

win_remote_ssh

Seguimos las instrucciones de la consola hasta el final, pero dejando phassphrase vacía.

Después de esto el campo Found Existing SSH permission file habrá sido rellenado automáticamente con la ruta al archivo local que contiene la clave SSH.

Ahora ya podemos empaquetar nuestro proyecto para iOS mediante una máquina remota desde el menu superior File > Package Project > iOS

win_remote_ios_ue4

Y esto es todo, ahora podemos continuar trabajando con el entorno en nuestra plataforma Windows y empaquetar el proyecto para plataforma iOS sin tener que cambiar físicamente a la máquina Mac, y además sin gastar dinero en una licencia de desarrollo iOS solo con fines de testing

Eliminando archivos de aprovisionamiento

Si queremos eliminar un archivo de aprovisionamiento que no vamos a utilizar o un certificado en plataforma Windows nos vamos a:

C:\Users\xxxx\AppData\Local\Apple Computer\MobileDevice\Provisioning Profiles\

win_provision

Seleccionamos el .mobileprovision y simplemente lo borramos del disco

Para eliminar un certificado abrimos una ventana de Símbolo de sistema y ejecutamos Certmgr para abrir la herrmienta que gestiona los certificados de usuario

En Personal > Certificados

win_certmgr_delete

Click derecho sobre el certificado y Eliminar

Parte 3: Mobileprovision tester

2020/10/06 – Actualizado para incluir requerimiento de iTunes requirements y UE4 4.25


Ayudanos con este blog!

El último año he estado dedicando cada vez más tiempo a la creación de tutoriales, en su mayoria sobre desarrollo de videojuegos. Si crees que estos posts te han ayudado de alguna manera o incluso inspirado, por favor considera ayudarnos a mantener este blog con alguna de estas opciones. Gracias por hacerlo posible!

Escribe un comentario

Comentario