¿Con qué frecuencia los desarrolladores de iOS tenemos que crear una aplicación para descargarla? iTunes Connect App Store Connect ? Durante la fase de prueba beta activa de la aplicación, debe corregir rápidamente los errores y entregar un ensamblado actualizado para la prueba. También es necesario descargar certificados, perfiles de aprovisionamiento, hacer clic en muchas marcas de verificación y botones diferentes para cada nueva compilación.
Afortunadamente, existe una herramienta tan maravillosa como fastlane que nos ayuda a automatizar las acciones manuales de un desarrollador móvil.
En esta publicación, te diré qué es fastlane y cómo comenzar a usarlo rápidamente en tus proyectos de iOS.
Introduccion
Que es esto
Fastlane es una herramienta para automatizar el ensamblaje y el diseño de aplicaciones móviles iOS y Android , que también incluye generar capturas de pantalla , ejecutar pruebas de Unidad / UI , enviar mensajes a Slack , conectarse a Crashlytics y muchas otras cosas útiles que hacen la vida más fácil.
¿Cuál es el beneficio?
Inicialmente no tomará más de dos horas configurar los comandos básicos para automatizar el cálculo de la aplicación, por ejemplo, para publicar en App Store o TestFlight, sin embargo, esto ahorrará mucho tiempo en el futuro, ya que Todo el proceso se iniciará en una sola llamada desde la línea de comandos.
ATENCIÓN: para completar todos los pasos, se requiere una suscripción de desarrollador de Apple, ya que el acceso a App Store Connect no está disponible para cuentas gratuitas.
Instalación
Instalar Fastlane en sí
Para comenzar, instale / actualice a la última versión de Xcode Command Tools:
$ xcode-select --install
Instalar gema fastlane:
$ sudo gem install fastlane -NV
Agregar al proyecto
En el directorio raíz del proyecto, ejecute:
$ sudo fastlane init
Fastlane nos ofrecerá opciones para scripts preinstalados según lo que queramos:

Elegiremos la opción 4, como Prescribiremos todos los comandos necesarios para nuestra situación:

Hecho La carpeta fastlane y el archivo de gemas se han instalado con éxito en nuestro proyecto.
Antes de continuar
Si el perfil del shell de la configuración regional no es UTF-8 , habrá problemas con la construcción y la carga de compilaciones. Entramos en el archivo de su perfil de shell ( ~ / .bashrc , ~ / .bash_profile , ~ / .profile o ~ / .zshrc ) y agregamos las siguientes líneas:
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
Ahora está listo para escribir los pasos inmediatos para automatizar el ensamblaje.
Como funciona
Primero, descubra qué hace fastlane: sus comandos principales y cómo describimos lo que hay que hacer.
Comandos (acciones)
Fastlane viene con muchos comandos útiles que facilitan la vida del desarrollador:
- cert : descarga e instala automáticamente los certificados necesarios (Distribución, Desarrollo) para firmar las aplicaciones recopiladas;
- increment_build_number : aumenta el número de compilación en 1 o cambia el valor especificado en el parámetro build_number
- suspiro : descarga e instala automáticamente todos los perfiles de suministro necesarios;
- instantánea : ejecuta pruebas de IU y toma capturas de pantalla que se pueden usar al enviar para su revisión en la App Store;
- gimnasio : recopila el archivo y, aquí, el ipa final de su aplicación;
- exploración : todo es simple: inicia un objetivo de prueba;
- entregar : envía ipa, capturas de pantalla, metadatos directamente a la tienda de aplicaciones;
- piloto : carga la nueva ipa a la prueba beta en TestFlight. También puede administrar probadores con este comando.
- y muchos otros
Fastfile
La carpeta fastlane contiene Fastfile y Appfile . En el Appfile, prescribiremos los valores necesarios para el montaje y la publicación: ID de paquete, ID de aplicación, ID de equipo y otros. En Fastfile describiremos nuestros scripts. Después de la instalación inicial, se ve así:
default_platform(:ios) platform :ios do desc "Description of what the lane does" lane :custom_lane do # add actions here: https://docs.fastlane.tools/actions end end
- default_platform (: ios) : establece la plataforma predeterminada para no especificarla desde la línea de comandos.
- platform: ios do ... end - aquí se describen "carriles" para la plataforma iOS.
- desc "Descripción de lo que hace el carril" - una breve descripción de "carril". La lista de todos los "carriles" con descripciones se puede ver usando el
$ fastlane lanes
. - lane: custom_lane do ... end : Lane (path, strip) es, más simplemente, un método. Tiene un nombre, parámetros y cuerpo. En el cuerpo, llamaremos a los comandos que necesitamos para construir, diseñar, ejecutar pruebas, etc. Las líneas se llaman desde la línea de comandos llamando a
$ fastlane [lane_name] [parameters]
. Es con la llamada de uno de los carriles que comienzan los pasos automatizados.
Carga automática a TestFlight
Comencemos por establecer un nombre amigable para nuestro carril. Cambie el nombre de custom_lane a testflight_lane . Ahora está claro que el resultado de ejecutar este script será un nuevo ensamblado cargado en TestFlight .
default_platform(:ios) platform :ios do desc "Builds, achieves and uploads ipa to TestFlight" lane :testflight_lane do
Configurar Appfile
Para no ingresar el paquete de aplicaciones y el ID de Apple cada vez que ejecute el script, escríbalos en el Appfile :
app_identifier "ru.ee.shishko.TheHatGame" apple_id "ee.shishko@gmail.com"
Certificados y Perfiles de Provisión
Agregue los comandos cert y sigh para instalar los certificados y los perfiles de aprovisionamiento, respectivamente:
( Atención : si su aplicación no está en App Store Connect, debe agregar el comando produce con el parámetro app_name )
default_platform(:ios) platform :ios do desc "Builds, achieves and uploads ipa to TestFlight" lane :testflight_lane do # App Store Connect: # produce ( # app_name: "MyAppName" # ) cert sigh end end
Ejecute nuestro script con el comando $ fastlane testflight_lane
Al iniciar Fastlane, nos pedirá que ingresemos la contraseña de la cuenta, ingrésela. Solo se requerirá una vez: Fastlane lo recordará y no necesitará ingresar nada en los próximos lanzamientos.
Así es como se ve la salida cuando fastlane completa con éxito el script:

Ahora el certificado y los perfiles de aprovisionamiento se descargan e instalan. Queda por fijar el objetivo deseado en la contribución general:

Construir aplicación
Agregue el comando increment_build_number para aumentar el número de compilación. Si su archivo .xcodeproj principal no está en la carpeta raíz, especifique la ruta en el parámetro xcodeproj :
default_platform(:ios) platform :ios do desc "Builds, achieves and uploads ipa to TestFlight" lane :testflight_lane do cert sigh increment_build_number # .xcodeproj , : # # increment_build_number( # xcodeproj: "./path/to/MyApp.xcodeproj" # ) end end
Para aumentar el número de compilación, vaya a Configuración de compilación / Control de versiones y configure el Sistema de control de versiones en la Versión de proyecto actual y genérica de Apple en 1 :

Agregue el comando gym , que recopila el archivo ipa de nuestra aplicación:

Entre los parámetros puede especificar dónde se colocarán ipa ( directorio_salida ), nombre ipa ( nombre_salida ), esquema ( esquema ), si se debe hacer Limpiar ( limpiar ) y algunos otros. No especificaremos nada en los parámetros: fastlane establecerá los parámetros de forma predeterminada, recopilará y firmará ipa, pero nuevamente: si lo desea y es necesario, todo se puede especificar en detalle:
default_platform(:ios) platform :ios do desc "Builds, achieves and uploads ipa to TestFlight" lane :testflight_lane do cert sigh increment_build_number gym # : # # gym( # workspace: "TheHatGame.xcworkspace", # scheme: "TheHatGame", # configuration: "Release", # clean: true, # output_directory: "./build", # output_name: "TheHatGame.ipa", # codesigning_identity: "iPhone Distribution: Evgeny Shishko" # ) end end
Subir a TestFlight
Para cargar ipa en TestFlight usaremos Pilot :

Con Pilot puedes:
- Descargar y distribuir ensamblajes
- agregar y eliminar probadores beta;
- recibir información sobre probadores y los dispositivos que usan;
- exportar información de probadores a .csv para importarlos a otro proyecto.
Utilizaremos su función principal: enviar ensamblados a Apple Store Connect .
Agregue test_light uploadl para llamar upload_to_testflight con parámetros skip_submission (lo usaremos solo para cargar el archivo ipa) y skip_waiting_for_build_processing (no esperamos que termine el procesamiento):
default_platform(:ios) platform :ios do desc "Builds, achieves and uploads ipa to TestFlight" lane :testflight_lane do cert sigh increment_build_number gym upload_to_testflight( skip_submission: true, skip_waiting_for_build_processing: true ) end end
Ejecute el script final
Guardamos nuestros cambios y corremos desde la consola:
$ fastlane testflight_lane
En la etapa de envío a testflight, deberá ingresar la contraseña específica de la aplicación en la consola (que se requiere para la autorización en el Cargador de aplicaciones ). Puede encontrarlo en su cuenta de ID de Apple al generarlo haciendo clic en "Generar contraseña":

Después de ingresar la contraseña, el nuevo ensamblado se cargará con éxito en TestFlight y fastlane terminará allí:

El estado de la nueva versión se puede ver en App Store Connect:

Conclusión
Eso es todo! Me gustaría llamar la atención sobre el hecho de que en este artículo, en el caso más general, probamos las capacidades de fastlane. En este sentido, adjunto una encuesta: ¿ustedes, Khabrovites, estarán interesados en publicaciones sobre el uso detallado de los comandos mencionados y otros comandos útiles en fastlane y características avanzadas en la configuración de scripts?
La aplicación con la configuración fastlane presentada se puede encontrar aquí .