Compilación de aplicaciones de Xamarin para iOS
Importante
Visual Studio App Center está programado para retirarse el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.
Obtenga más información sobre las escalas de tiempo y las alternativas de soporte técnico.
Nota
Las versiones y requisitos admitidos de App Center admiten proyectos portables de biblioteca de clases (PCL) y .NET Standard . Consulte Cloud Build Machines para ver las versiones de .NET Standard. App Center no admite componentes del almacén de componentes de Xamarin y se recomienda usar paquetes NuGet siempre que esté disponible. Si usa un componente que no se puede reemplazar, póngase en contacto con nosotros. Consulte la ayuda y los comentarios.
Para empezar a compilar la primera aplicación de Xamarin iOS, deberá:
- Conéctese a la cuenta de servicio del repositorio (GitHub, Bitbucket, VSTS, Azure DevOps).
- Seleccione un repositorio y una rama donde reside la aplicación.
- Configure el proyecto o el área de trabajo de la compilación y el esquema que desea compilar.
Nota
Para que la aplicación se ejecute en un dispositivo real, la compilación debe estar firmada con un perfil de aprovisionamiento válido y un certificado.
Si no se ha conectado previamente a la cuenta de servicio del repositorio, debe conectarla. Una vez conectada la cuenta, seleccione el repositorio donde se encuentra el proyecto de iOS. Para configurar una compilación para un repositorio, necesita permiso de administrador y extracción para él.
Después de seleccionar un repositorio, seleccione la rama que desea compilar. De forma predeterminada, se mostrarán todas las ramas activas.
Antes de la primera compilación, es necesario configurar el proyecto de Xamarin.
App Center detecta automáticamente los archivos de solución y proyecto en el repositorio si se encuentran dentro del intervalo de análisis. Seleccione el .sln o .csproj/.fsproj que desea compilar.
Nota
Para obtener el mejor rendimiento, el análisis se limita actualmente a dos niveles de directorio para .sln y cuatro niveles de directorio para .csproj/fsproj , incluida la raíz del repositorio.
En el código, asegúrate de deshabilitar los proyectos de Android y UWP para las configuraciones de compilación diseñadas para compilaciones de iOS: entra en las asignaciones de configuración de la solución y para todas las asignaciones destinadas a iPhone y iPhoneSimulator, desactiva todos los proyectos destinados a otras plataformas. Este cambio garantizará que, cuando se compila el .sln , no intentará compilar los demás proyectos. Hay más información de asignación de configuraciones de soluciones que puede leer.
Para compilar desde un archivo .csproj/.fsproj , todos los proyectos a los que se hace referencia (por ejemplo, el proyecto PCL) deben contener la configuración con el mismo nombre que el del proyecto de iOS de origen. Por lo tanto, si ejecuta la configuración de depuración para el simulador en App Center, el proyecto de PCL debe tener la configuración Debug|iPhoneSimulator . En caso de que no existan y para evitar errores adicionales, agreguemos estas configuraciones antes de compilar los proyectos. Esas configuraciones tienen valores predeterminados básicos solo para Depurar y Liberar.
Seleccione la configuración con la que desea compilar. Las configuraciones se detectan automáticamente en función del archivo de origen seleccionado en el paso anterior.
App Center permite usar diferentes entornos mono agrupados con el SDK de Xamarin.iOS respectivo para que la compilación mantenga la compatibilidad con versiones anteriores al publicar una compatibilidad con nuevas características. El mono predeterminado para una nueva configuración de rama será el estable más reciente. Puede optar por usar uno de los entornos mono anteriores para crear versiones anteriores de marcos o bibliotecas. Al elegir una versión de Mono diferente, verá la versión del SDK de Xamarin.iOS que se incluye con ella. Para realizar un seguimiento de las actualizaciones de la versión del SDK de Xamarin, puede leer entradas en el blog de la versión de Xamarin.
La versión correcta de .NET se seleccionará automáticamente en función de la versión de Xamarin.iOS usada para la compilación y no se pueda sobrescribir. Puede ver la asignación de Xamarin.iOS a .NET que usan nuestros servicios en la tabla siguiente:
Xamarin.iOS | .NET |
---|---|
13.20 | 3.1.401 |
14,0 | 3.1.401 |
14,2 | 3.1.401 |
14.4 | 3.1.401 |
14.6 | 5.0.100 |
14.8 | 5.0.100 |
14.10 | 5.0.100 |
14,14 | 5.0.100 |
14.16 | 5.0.100 |
14,20 | 5.0.100 |
15 | 5.0.100 |
15.2 | 5.0.100 |
15,4 | 5.0.100 |
15,6 | 5.0.100 |
15.8 | 5.0.100 |
15.10 | 5.0.100 |
15.12 | 5.0.100 |
16.0 | 5.0.100 |
16.0 (.NET 6) | 6.0.405 |
16.1 | 6.0.405 |
16,2 | 6.0.405 |
Actualmente, las versiones compatibles de Xamarin requieren Xcode 11.7 o posterior
De forma predeterminada, se desencadena una nueva compilación cada vez que un desarrollador inserta en una rama configurada. Si prefiere desencadenar manualmente una nueva compilación, puede cambiar esta configuración en el panel de configuración.
Las compilaciones del simulador solo se pueden ejecutar en simuladores y no se pueden instalar en el dispositivo, pero las compilaciones se completan más rápido que las compilaciones del dispositivo. Si la compilación no es una compilación del simulador, debe cargar los archivos de firma de código en el paso siguiente.
Cuando se habilita, CFBundleVersion
en info.plist de la aplicación se incrementa automáticamente para cada compilación. El cambio se produce previamente a la compilación y no se confirmará en el repositorio.
Una compilación correcta del dispositivo generará un archivo IPA. Para instalar la compilación en un dispositivo, debe firmarse con un perfil de aprovisionamiento y un certificado válidos. Para firmar las compilaciones generadas desde una rama, habilite el inicio de sesión de código en el panel de configuración y cargue un perfil de aprovisionamiento () y un certificado válido (.mobileprovision
.p12
), junto con la contraseña del certificado. Puede obtener más información sobre la firma de código y el aprovisionamiento de dispositivos de aplicaciones de Xamarin iOS en la documentación de Xamarin.
Las aplicaciones con extensiones de app o watchOS requieren que se firme un perfil de aprovisionamiento adicional por extensión.
Nota
Hay un problema existente al ejecutarse nuget restore
en proyectos que contienen aplicaciones watchOS de Xamarin.
La creación de una aplicación watchOS en App Center sin una solución alternativa producirá un error:
Project <project> is not compatible with xamarinios10 (Xamarin.iOS,Version=v1.0) / win-x86. Project <project> supports: xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
.
Para compilar aplicaciones watchOS en App Center, se requiere una solución alternativa. Dentro del proyecto de iOS contenedor, que hace referencia a la aplicación inspección, se debe incluir una línea adicional:
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
Ejemplo de referencia de WatchApp con solución alternativa:
<ProjectReference Include="..\MyWatchApp\MyWatchApp.csproj">
<Project>{59EB034F-3D29-43A5-B89F-124879504771}</Project>
<Name>MyWatchApp</Name>
<IsWatchApp>True</IsWatchApp>
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
</ProjectReference>
Use el archivo .ipa recién generado para probar si la aplicación se inicia en un dispositivo real. La prueba de inicio agrega aproximadamente 10 minutos más al tiempo de compilación. Es posible que quiera comprobar una guía más completa sobre cómo probar las compilaciones.
Si el archivo NuGet.config está protegido para el repositorio y se encuentra junto al .sln o al nivel raíz del repositorio, App Center restaura las fuentes de NuGet privadas cuando se agregan como se muestra en el ejemplo siguiente. Las credenciales se pueden agregar de forma segura mediante variables de entorno:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
<add key="MyGet" value="https://www.myget.org/F/MyUsername/api/v2/index.json" />
<add key="MyAuthNuget" value="https://nuget.example.com/v2/index.json" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSourceCredentials>
<MyAuthNuget>
<add key="Username" value="$USER_VARIABLE" />
<add key="ClearTextPassword" value="$PASSWORD_VARIABLE" />
</MyAuthNuget>
</packageSourceCredentials>
</configuration>
Si tiene configuraciones complejas y necesita más información, consulte Configuración del comportamiento de NuGet.
Puede configurar cada compilación correcta desde una rama para distribuirla a un grupo de distribución creado anteriormente. Puede agregar un nuevo grupo de distribución desde la sección Distribuir. Siempre hay un grupo de distribución predeterminado denominado "Colaboradores" que incluye a todos los usuarios que tienen acceso a la aplicación.
Una vez guardada la configuración, se iniciará automáticamente una nueva compilación.
Una vez desencadenada una compilación, puede estar en los siguientes estados:
- en cola : la compilación está en una cola en espera de que los recursos se libere.
- building : la compilación se está ejecutando y ejecutando las tareas predefinidas.
- correcto: la compilación se completó correctamente.
- failed : la compilación se detuvo debido a un error. Puede solucionar los problemas que se han producido al descargar e inspeccionar el registro de compilación.
- cancelado: una acción de usuario canceló la compilación o agotó el tiempo de espera.
Para una compilación completada (correcta o errónea), descargue los registros para obtener más información sobre cómo se ha producido la compilación. App Center proporciona un archivo con los siguientes archivos:
|-- 1_build.txt (this is the general build log)
|-- build (this folder contains a separate log file for each build step)
|-- <build-step-1> (e.g. 2_Get Sources.txt)
|-- <build-step-2> (e.g. 3_Pod install.txt)
|--
|-- <build-step-n> (e.g. n_Post Job Cleanup.txt)
Los registros específicos del paso de compilación (ubicados en el build/
directorio del archivo) son útiles para solucionar problemas y comprender en qué paso y por qué se produjo un error en la compilación.
.ipa
es un archivo de archivo de aplicación de iOS que contiene la aplicación de iOS. Si la compilación se ha firmado correctamente, .ipa
se puede instalar en un dispositivo real, correspondiente al perfil de aprovisionamiento usado al firmar. Hay más detalles sobre la firma y distribución de código con App Center.
Si la aplicación es una compilación del simulador, puede ejecutar el .app
archivo en un simulador, pero no puede usarlo en un dispositivo real.
Los archivos de símbolos solo se generan para compilaciones de dispositivos. Los archivos .dsym contienen los símbolos de depuración de la aplicación.
- Si anteriormente integraba el SDK de App Center en la aplicación con el módulo de informes de bloqueo habilitado, el servicio de informes de bloqueos requiere este
.dsym
archivo para que una compilación muestre informes de bloqueos legibles (simbólicos) humanos. - Si anteriormente integraba otro SDK para informes de bloqueos en la aplicación (por ejemplo, SDK de HockeyApp), el servicio correspondiente requiere que el
.dsym
archivo muestre los informes de bloqueo legibles humanos.