首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.ipa构建后用假脚本定位TeamCity (Xamarin.iOS Ad)

在.ipa构建后用假脚本定位TeamCity (Xamarin.iOS Ad)
EN

Stack Overflow用户
提问于 2017-01-24 21:30:11
回答 1查看 211关注 0票数 1

我正在尝试为我的Xamarin.iOS应用程序设置一个CI构建,使用TeamCity并伪造,并将结果(.ipa文件)上传到HockeyApp。我遇到了一个小问题。

我成功地从TeamCity触发了假构建脚本,并成功地构建了我的应用程序。下一步是从"HockeyApp“模块从FakeLib调用"HockeyAppHelper”方法,但要做到这一点,我需要.ipa文件的路径。我发现的所有示例都只是硬编码路径(类似于bin/iPhone/Release/*.ipa),但在我的示例中,.ipa将被丢弃在包含时间戳(如bin/iPhone/Release/MyApp 2017-01-24 17-16-56/MyApp.ipa)的文件夹中。

问题是如何在构建脚本中获得.ipa文件(因为时间戳无法对路径进行硬编码)?

下面是假脚本中负责构建和上传.ipa的部分:

代码语言:javascript
复制
Target "ios-adhoc" (fun () ->
    RestorePackages "RidderCRM.iOS.sln"

    UpdatePlist version versionNumber "RidderCRM.iOS"

    iOSBuild (fun defaults ->
        {defaults with
            ProjectPath = "RidderCRM.iOS.sln"
            Configuration = "Release"
            Platform = "iPhone"
            Target = "Build"
            BuildIpa = true
            Properties = [ "CodesignKey", "iPhone Distribution"; "CodesignProvision", "Automatic:AdHoc" ]          
        })

    let appPath = Directory.EnumerateFiles(Path.Combine("RidderCRM.iOS", "bin", "iPhone", "Release"), "*.ipa").First()

    TeamCityHelper.PublishArtifact appPath

    HockeyApp (fun p ->  
        {p with 
            ApiToken = Environment.GetEnvironmentVariable("HockeyAppApiToken")
            File = appPath
        }) |> ignore
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-25 08:35:14

考虑到这更多的是关于实际的MSBuild任务在Xamarin.iOS.Common.targets中做什么的问题,您可以做很多事情。

  1. 您可以编辑Xamarin.iOS.Common.targets文件以删除日期时间戳。(不太伟大)
  2. 您可以使用自定义Target来调用<Copy>任务。(更好)
  3. 您可以自定义IpaPackageDir属性以指定目录应该是什么。(最佳)

简而言之,TimeStamp的问题直接来自于以下元素:

代码语言:javascript
复制
<IpaPackageDir Condition="'$(IpaPackageDir)' == ''">$(DeviceSpecificOutputPath)$(_AppBundleName) $([System.DateTime]::Now.ToString('yyyy-MM-dd HH-mm-ss'))</IpaPackageDir>

我们该怎么做呢?

  1. 您将在您的Xamarin.iOS.Common.targets文件中编辑上面的代码片段并删除时间戳。如果您不熟悉.targets,那么注意编辑它们通常是个好主意。另外,更新Xamarin可以覆盖这些内容。
  2. 您可以添加一个<Target Name="AfterBuild">定义,其中包含一个简单的复制任务:<Copy SourceFiles="$(IpaPackagePath)" DestinationFolder="$(OutputPath)" />
  3. 您可以通过:<IpaPackageDir>直接编辑<PropertyGroup> <IpaPackageDir>$(OutputPath)</IpaPackageDir> </PropertyGroup>的属性

关于#3:的注记

添加了一个新的MSBuild属性IpaPackageDir,以便于自定义.ipa文件输出位置。如果IpaPackageDir设置为自定义位置,则.ipa文件将被放置在该位置,而不是默认的时间戳子目录。

location

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41839334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档