【问题标题】:Azure DevOps Xamarin.iOS simulator build outputAzure DevOps Xamarin.iOS 模拟器生成输出
【发布时间】:2020-10-28 18:37:18
【问题描述】:

这是我的构建管道:

pool:
  vmImage: 'macOS-latest'
  
variables:
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  displayName: 'Restoring nuget for the solution'
  inputs:
    restoreSolution: '**/*.sln'

- task: XamariniOS@2
  displayName: 'Building iOS for simulator'
  inputs:
    solutionFile: '**/*iOS*.csproj'
    configuration: '$(buildConfiguration)'
    buildForSimulator: true
    packageApp: false
- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: $(build.SourcesDirectory)
    Contents: '**/*.app'
    TargetFolder: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()
  
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: Mobile-BackReporting iOS'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

重要的部分是任务:CopyFiles@2

我正在尝试将 iOS 模拟器包(即 SampleToDo.iOS.app)复制到暂存目录。我可以看到在构建输出中,文件在这里生成:

/Users/runner/runners/2.171.1/work/1/s/MobileBackReporting.iOS/bin/iPhoneSimulator/Release/SampleToDo.iOS.app

为了到达这条路径,我已经尝试了所有可能的构建和代理环境变量路径的组合,在这里可以找到: https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml

我仍然无法将 SampleToDo.iOS.app 文件复制到暂存区,因为复制文件任务会发出以下警告:

##[warning]Directory '/Users/runner/work/1/a' is empty. Nothing will be added to build artifact 'drop'.
##[warning]Directory '/Users/runner/work/1/s' is empty. Nothing will be added to build artifact 'drop'.

【问题讨论】:

    标签: xamarin.forms azure-devops xamarin.ios msbuild msbuild-task


    【解决方案1】:

    如果您在管道中启用 system.debug(在管道中设置 system.debug=true 变量)。从复制文件任务日志可以看出,.app其实是一个目录。这就是为什么复制文件任务显示找不到文件的错误。

    由于.app是一个目录,你需要像下面这样配置复制文件任务。复制文件任务会将该目录下的所有内容复制到文件夹$(build.artifactstagingdirectory)/SampleToDo.iOS.app

    如果要生成.ipa文件,可以设置packageApp=true

        - task: CopyFiles@2
          displayName: 'Copy Files'
          inputs:
            SourceFolder: $(build.SourcesDirectory)
            Contents: '**/SampleToDo.iOS.app/**'
            TargetFolder: '$(build.artifactstagingdirectory)/SampleToDo.iOS.app'
            flattenFolders: true
          condition: succeededOrFailed()
    
        - task: PublishBuildArtifacts@1
          displayName: 'Publish Artifact: Mobile-BackReporting iOS'
          inputs:
            PathtoPublish: '$(build.artifactstagingdirectory)'
          condition: succeededOrFailed()
    

    【讨论】:

    • 感谢您提供此信息。我会快速尝试一下。我可以运行 .ipa 文件而不只在模拟器上签名吗?我们现在只需要在模拟器上运行它。
    • 恐怕你不能。据说hereThe Xamarin.iOS build task will only generate an .ipa package if the agent running the job has the appropriate provisioning profile and Apple certificate installed
    • 嗨以上答案是否有助于解决原始问题?如果有帮助,你能接受上面的答案吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-08-29
    • 2023-03-26
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    相关资源
    最近更新 更多