es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tubería de Azure DevOps para construir un paquete de iOS con aplicación de iPhone y aplicación de watchOS.

Me gustaría usar un pipeline de Azure DevOps para construir un paquete de iOS que contenga tanto una aplicación de iPhone como una de WatchOS.

Hay un espacio de trabajo que contiene las 3 aplicaciones (una para el teléfono y dos para el reloj)

MyWorkspace:
– MyPhoneApp
– MyWatchApp
– MyWatchApp Extension

Utilizo la siguiente tarea de XCode

  • tarea: Xcode@5
    inputs:
    actions: ‘build’
    scheme: ‘MyApp’
    sdk: ‘iphoneos’
    configuration: ‘Release’
    xcWorkspacePath: ‘$(system.defaultworkingdirectory)/MyWorkspace.xcworkspace’
    xcodeVersion: ’12’

Esta tarea lanza xcodebuild

xcodebuild -sdk iphoneos -configuration Release -workspace
/Users/runner/work/1/s/MyApp/MyWorkspace.xcworkspace -scheme MyApp build

y falla con los siguientes errores:

error: unable to resolve product type
‘com.apple.product-type.application.watchapp2’ for platform ‘iphoneos’
(in target ‘MyWatchApp’ from project ‘MyApp’)

error: unable to resolve product type
‘com.apple.product-type.watchkit2-extension’ for platform ‘iphoneos’
(in target ‘MyWatchApp Extension’ from project ‘MyApp’)

¿Qué tipo de SDK necesito especificar para construirlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para construir tanto la aplicación de iPhone como la aplicación de watchOS en el mismo paquete usando una tubería de Azure DevOps y xcodebuild, es necesario especificar los SDK apropiados para cada aplicación.

    En la tarea existente de XCode, solo se está especificando el SDK para la aplicación de iPhone con sdk: 'iphoneos'. Para construir la aplicación y extensión de watchOS, es necesario agregar comandos adicionales de xcodebuild para construirlos.

    Suponiendo que los objetivos MyWatchApp y MyWatchApp Extension tienen los perfiles de aprovisionamiento y certificados correctos, puedes agregar los siguientes 2 comandos xcodebuild a la tubería:

    - task: Xcode@5
      inputs:
        actions: 'build'
        scheme: 'MyApp'
        sdk: 'iphoneos'
        configuration: 'Release'
        xcWorkspacePath: '$(system.defaultworkingdirectory)/MyWorkspace.xcworkspace'
        xcodeVersion: '12'
    
    - task: Xcode@5
      inputs:
        actions: 'build'
        scheme: 'MyWatchApp'
        sdk: 'watchos'
        configuration: 'Release'
        xcWorkspacePath: '$(system.defaultworkingdirectory)/MyWorkspace.xcworkspace'
        xcodeVersion: '12'
    
    - task: Xcode@5
      inputs:
        actions: 'build'
        scheme: 'MyWatchApp Extension'
        sdk: 'watchos'
        configuration: 'Release'
        xcWorkspacePath: '$(system.defaultworkingdirectory)/MyWorkspace.xcworkspace'
        xcodeVersion: '12'
    

    La primera tarea construye la aplicación de iPhone utilizando la configuración, esquema y SDK existentes especificados en la tarea original. Las dos tareas siguientes construyen la aplicación y extensión de watchOS usando el SDK de watchOS en lugar del SDK de iphoneos especificado en la primera tarea.

    Después de ejecutar estas tres tareas, tu tubería de Azure DevOps debería producir un paquete de iOS que incluye tanto una aplicación de iPhone como una aplicación de watchOS en el mismo paquete.

Comments are closed.