缓慢的应用程序构建 - Xamarin for Visual Studio

时间:2016-11-10 08:53:47

标签: visual-studio xamarin visual-studio-2015 xamarin.android

我的Xamarin.Android应用程序的构建/部署现在非常缓慢。我不记得以前这么慢。

我启用了:

  • 使用共享运行时
  • 快速部署

启用或禁用这些设置没有任何区别。在这两种情况下,构建/部署我的应用程序大约需要2分20秒(最多3分钟!)。 使用真实设备或适用于Android的Visual Studio模拟器也没有任何区别。

为什么这么慢?我没有使用正确的设置吗?

更新2

昨天(11月14日)我将Xamarin.VS更新为4.2.1.58。没有改进构建持续时间。

我们正在使用TeamCity构建我们应用的发布版本,TeamCity统计数据完全显示了我正在谈论的内容。

在下图中,我选择了上一季度作为日期范围。查看构建持续时间的主要增加。现在,我不介意等待3分钟发布版本,但是在调试时这是不可接受的。

Nov. 7, before installing latest Xamarin update Nov. 8, after installing update and targetting Android 7

更新3

乔恩,谢谢你的帮助。

与此同时,我在构建日志中自己做了一些研究,并找到了每个构建任务的持续时间。我发现不知怎的GetAdditionalResourcesFromAssemblies需要花费很多时间。

我在应用程序中拥有的资源数量没有显着变化,所以这让我想到:它可能是我正在使用的另一个程序集......

然后我检查了修订版1029(这是最后一次修改需要花费一分钟时间),并尝试在更新的环境中对其进行调试。它仍然在1分30秒内建成......

所以:

  • 可能不是VS Xamarin更新(否则版本1029也会变慢)
  • 可能不是快速部署,在构建过程中持续时间增加

那么在我的应用的修订版1029和1030之间有什么变化?

  1. 将Visual Studio的Xamarin更新为4.2.0.719
  2. Android SDK Manager中安装的Android 7.0 SDK平台
  3. 在项目属性中将Compile using Android version更改为Android 7.0
  4. 更新了Xamarin.Android支持库,范围从23.4.0.1到24.2.1
  5. 更改4 是我首先更新的原因,我想使用{24}在版本24中进行了改进的Bottomsheet。但是支持库的目标是针对Android 7.0,所以我必须做1-3才能更新支持库。

    支持库绑定中是否有更改导致所有这些?我在互联网上检查了其他有这个问题的开发者,并在Xamarin论坛中找到了this。将AndroidExplicitCrunch build属性设置为true似乎可以解决它,但是当我尝试这样做时,我又遇到了另一个构建错误。

    无论如何,这就是我在此期间尝试过的。现在,根据要求,这是我的诊断构建日志:

    1>Project Performance Summary:
    1>        3 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAll.App.Shared\OverAll.App.Shared.csproj   3 calls
    1>                  1 ms  GetTargetPath                              1 calls
    1>                  0 ms  GetNativeManifest                          1 calls
    1>                  2 ms  GetCopyToOutputDirectoryItems              1 calls
    1>        4 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAllField.XamarinAndroid.DataLayer\OverAllField.XamarinAndroid.DataLayer.csproj   3 calls
    1>                  1 ms  GetTargetPath                              1 calls
    1>                  0 ms  GetNativeManifest                          1 calls
    1>                  3 ms  GetCopyToOutputDirectoryItems              1 calls
    1>    40103 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAllField.XamarinAndroid.ServiceClient\OverAllField.XamarinAndroid.ServiceClient.csproj   1 calls
    1>
    1>Target Performance Summary:
    1>        0 ms  Compile                                    1 calls
    1>        0 ms  ResolveReferences                          1 calls
    1>        0 ms  BclBuildGetTargetPath                      1 calls
    1>        0 ms  EnsureNuGetPackageBuildImports             1 calls
    1>        0 ms  AfterResGen                                1 calls
    1>        0 ms  ResolveCodeAnalysisRuleSet                 1 calls
    1>        0 ms  _CreatePropertiesCache                     1 calls
    1>        0 ms  _SetTargetFrameworkMonikerAttribute        1 calls
    1>        0 ms  BeforeResGen                               1 calls
    1>        0 ms  ModifyUnitTestPlatformVersion              1 calls
    1>        0 ms  CreateCustomManifestResourceNames          1 calls
    1>        0 ms  BclBuildAddProjectReferenceProperties      1 calls
    1>        0 ms  _ResolveMonoAndroidFramework               1 calls
    1>        0 ms  UpdateAndroidResources                     1 calls
    1>        0 ms  CoreBuild                                  1 calls
    1>        0 ms  ExpressionBuildExtension                   1 calls
    1>        0 ms  _CheckTargetFramework                      1 calls
    1>        0 ms  _CopyAppConfigFile                         1 calls
    1>        0 ms  Build                                      1 calls
    1>        0 ms  DeleteBuildInfoFile                        1 calls
    1>        0 ms  CleanXsdCodeGen                            1 calls
    1>        0 ms  _SetupInstantRun                           1 calls
    1>        0 ms  GetFrameworkPaths                          1 calls
    1>        0 ms  DeleteBuildInfoResource                    1 calls
    1>        0 ms  _AddAndroidDefines                         1 calls
    1>        0 ms  BuildOnlySettings                          1 calls
    1>        0 ms  ComputeIntermediateSatelliteAssemblies     1 calls
    1>        0 ms  ValidationExtension                        1 calls
    1>        0 ms  AfterCompile                               1 calls
    1>        0 ms  _CheckInstantRunCondition                  1 calls
    1>        0 ms  _GenerateSatelliteAssemblyInputs           1 calls
    1>        0 ms  _SetupApplicationJavaClass                 1 calls
    1>        0 ms  _SetupDesignTimeBuildForIntellisense       1 calls
    1>        0 ms  SetWin32ManifestProperties                 1 calls
    1>        0 ms  CreateSatelliteAssemblies                  1 calls
    1>        0 ms  _CopySourceItemsToOutputDirectory          1 calls
    1>        0 ms  GetInstalledSDKLocations                   1 calls
    1>        0 ms  _AddAndroidEnvironmentToCompile            1 calls
    1>        0 ms  _CheckForContent                           1 calls
    1>        0 ms  _SeparateAppExtensionReferences            1 calls
    1>        0 ms  AfterResolveReferences                     1 calls
    1>        0 ms  BeforeResolveReferences                    1 calls
    1>        0 ms  PrepareResources                           1 calls
    1>        0 ms  ResolveSDKReferences                       1 calls
    1>        0 ms  _CheckForDeletedResourceFile               1 calls
    1>        0 ms  BeforeCompile                              1 calls
    1>        0 ms  UpdateAndroidAssets                        1 calls
    1>        0 ms  DesignTimeXamlMarkupCompilation            1 calls
    1>        0 ms  _AddMultiDexDependencyJars                 1 calls
    1>        0 ms  PrepareForRun                              1 calls
    1>        0 ms  ResGen                                     1 calls
    1>        0 ms  _GenerateAndroidAssetsDir                  1 calls
    1>        0 ms  AfterBuild                                 1 calls
    1>        0 ms  BclBuildSetRunningFullBuild                1 calls
    1>        0 ms  GetNativeManifest                          2 calls
    1>        0 ms  ExpandSDKReferences                        1 calls
    1>        0 ms  GenerateTargetFrameworkMonikerAttribute    1 calls
    1>        0 ms  _GenerateAndroidResourceDir                1 calls
    1>        0 ms  CreateManifestResourceNames                1 calls
    1>        0 ms  BeforeBuild                                1 calls
    1>        0 ms  _GenerateCompileInputs                     1 calls
    1>        0 ms  _SetupDesignTimeBuildForBuild              1 calls
    1>        0 ms  PrepareResourceNames                       1 calls
    1>        0 ms  _AddNativeLibraryArchiveToCompile          1 calls
    1>        1 ms  GetCopyToOutputDirectoryXamlAppDefs        3 calls
    1>        1 ms  _GenerateJavaDesignerForComponent          1 calls
    1>        1 ms  _CollectMonoAndroidOutputs                 1 calls
    1>        1 ms  _SetEmbeddedWin32ManifestProperties        1 calls
    1>        1 ms  CoreResGen                                 1 calls
    1>        1 ms  _ValidateLinkMode                          1 calls
    1>        1 ms  _GetLibraryImports                         1 calls
    1>        1 ms  _CheckForCompileOutputs                    1 calls
    1>        1 ms  _ReadPropertiesCache                       1 calls
    1>        1 ms  GetTargetPath                              2 calls
    1>        1 ms  _ComputeAndroidResourcePaths               1 calls
    1>        1 ms  SetBuildInfoDefaults                       1 calls
    1>        1 ms  SplitResourcesByCulture                    1 calls
    1>        1 ms  _SplitProjectReferencesByFileExistence     3 calls
    1>        1 ms  GenerateCompiledExpressionsTempFile        1 calls
    1>        1 ms  BclBuildDetermineReferencesToRedirect      1 calls
    1>        1 ms  _GetReferenceAssemblyPaths                 1 calls
    1>        1 ms  PreXsdCodeGen                              1 calls
    1>        2 ms  _RegisterMdbFilesWithFileWrites            1 calls
    1>        2 ms  PrepareForBuild                            1 calls
    1>        2 ms  _BuildSdkCache                             1 calls
    1>        2 ms  _CalculateAdditionalResourceCacheDirectories   1 calls
    1>        2 ms  AssignProjectConfiguration                 1 calls
    1>        2 ms  _CreateAdditionalResourceCache             1 calls
    1>        2 ms  GetReferenceAssemblyPaths                  1 calls
    1>        3 ms  _GetAdditionalResourcesFromAssemblies      1 calls
    1>        3 ms  _CheckDuplicateJavaLibraries               1 calls
    1>        3 ms  _CollectAdditionalResourceFiles            1 calls
    1>        3 ms  _ExtractLibraryProjectImports              1 calls
    1>        3 ms  _ComputeAndroidAssetsPaths                 1 calls
    1>        3 ms  AssignTargetPaths                          3 calls
    1>        3 ms  CopyFilesToOutputDirectory                 1 calls
    1>        4 ms  _ValidateResourceCache                     1 calls
    1>        4 ms  _ValidateAndroidPackageProperties          1 calls
    1>        5 ms  IncrementalClean                           1 calls
    1>        7 ms  _ResolveMonoAndroidSdks                    1 calls
    1>        9 ms  _CheckForInvalidConfigurationAndPlatform   3 calls
    1>       10 ms  GetCopyToOutputDirectoryItems              3 calls
    1>       11 ms  _CopyFilesMarkedCopyLocal                  1 calls
    1>       11 ms  _CleanGetCurrentAndPriorFileWrites         1 calls
    1>       12 ms  _AddLibraryProjectsEmbeddedResourceToProject   1 calls
    1>       18 ms  ImplicitlyExpandDesignTimeFacades          1 calls
    1>       29 ms  _BuildLibraryImportsCache                  1 calls
    1>       41 ms  ResolveProjectReferences                   1 calls
    1>       70 ms  _SetLatestTargetFrameworkVersion           1 calls
    1>      114 ms  _ResolveLibraryProjectImports              1 calls
    1>      138 ms  ResolveAssemblyReferences                  1 calls
    1>      207 ms  _UpdateAndroidResgen                       1 calls
    1>      356 ms  _GetPrimaryCpuAbi                          1 calls
    1>      803 ms  CoreCompile                                1 calls
    1>    38202 ms  _BuildAdditionalResourcesCache             1 calls
    1>
    1>Task Performance Summary:
    1>        0 ms  CreateCSharpManifestResourceName           1 calls
    1>        0 ms  Delete                                     2 calls
    1>        0 ms  FindAppConfigFile                          1 calls
    1>        0 ms  ResolveCodeAnalysisRuleSet                 1 calls
    1>        0 ms  CallTarget                                 1 calls
    1>        0 ms  ResolveNonMSBuildProjectOutput             1 calls
    1>        0 ms  AssignCulture                              1 calls
    1>        1 ms  GetFrameworkPath                           1 calls
    1>        1 ms  GetAndroidPackageName                      1 calls
    1>        1 ms  AssignProjectConfiguration                 1 calls
    1>        1 ms  ReadImportedLibrariesCache                 1 calls
    1>        1 ms  ReadLinesFromFile                          2 calls
    1>        1 ms  GetAppSettingsDirectory                    1 calls
    1>        1 ms  AssignTargetPath                          18 calls
    1>        1 ms  CreateTemporaryDirectory                   1 calls
    1>        1 ms  GetReferenceAssemblyPaths                  2 calls
    1>        2 ms  Message                                   20 calls
    1>        2 ms  CalculateAdditionalResourceCacheDirectories   1 calls
    1>        2 ms  GetJavaPlatformJar                         1 calls
    1>        2 ms  MakeDir                                    2 calls
    1>        2 ms  WriteLinesToFile                           1 calls
    1>        2 ms  ConvertToAbsolutePath                      1 calls
    1>        3 ms  RemoveDuplicates                           2 calls
    1>        3 ms  CopyIfChanged                              1 calls
    1>        3 ms  CheckDuplicateJavaLibraries                1 calls
    1>        3 ms  AndroidComputeResPaths                     2 calls
    1>        3 ms  ReadLibraryProjectImportsCache             1 calls
    1>        3 ms  CreateProperty                            41 calls
    1>        4 ms  CopyGeneratedJavaResourceClasses           1 calls
    1>        4 ms  GetExtraPackages                           1 calls
    1>        4 ms  GetAndroidDefineConstants                  1 calls
    1>        4 ms  CreateAndroidResourceStamp                 1 calls
    1>        5 ms  FindUnderPath                              5 calls
    1>        5 ms  ReadAdditionalResourcesFromAssemblyCache   2 calls
    1>        5 ms  CreateResgenManifest                       1 calls
    1>        6 ms  CreateItem                                23 calls
    1>        6 ms  RemoveDirFixed                             1 calls
    1>       12 ms  CreateManagedLibraryResourceArchive        1 calls
    1>       14 ms  Copy                                       3 calls
    1>       16 ms  ConvertResourcesCases                      1 calls
    1>       21 ms  GenerateResourceDesigner                   1 calls
    1>       28 ms  GetImportedLibraries                       1 calls
    1>       49 ms  MSBuild                                    3 calls
    1>       49 ms  ReadResolvedSdksCache                      1 calls
    1>      114 ms  ResolveLibraryProjectImports               1 calls
    1>      137 ms  ResolveAssemblyReference                   1 calls
    1>      142 ms  Aapt                                       1 calls
    1>      347 ms  GetPrimaryCpuAbi                           1 calls
    1>      792 ms  Csc                                        1 calls
    1>    38201 ms  GetAdditionalResourcesFromAssemblies       1 calls
    1>
    1>Build succeeded.
    1>
    1>Time Elapsed 00:00:40.09
    

    还有第二个摘要(日志中有两个这样的摘要),但我不能将其包含在问题中,因为它会超出正文字符限制。 第二个摘要的较小版本:

    2>Project Performance Summary:
    2>        6 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAll.App.Shared\OverAll.App.Shared.csproj   5 calls
    2>                  0 ms  GetTargetPath                              1 calls
    2>                  0 ms  GetNativeManifest                          1 calls
    2>                  1 ms  GetCopyToOutputDirectoryItems              1 calls
    2>                  5 ms  GetBuiltProjectOutputRecursive             2 calls
    2>        9 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAllField.XamarinAndroid.BarcodeScanner\OverAllField.XamarinAndroid.BarcodeScanner.csproj   4 calls
    2>                  0 ms  GetTargetPath                              1 calls
    2>                  2 ms  GetNativeManifest                          1 calls
    2>                  3 ms  GetCopyToOutputDirectoryItems              1 calls
    2>                  4 ms  GetBuiltProjectOutputRecursive             1 calls
    2>       17 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAllField.XamarinAndroid.DataLayer\OverAllField.XamarinAndroid.DataLayer.csproj   5 calls
    2>                  9 ms  GetTargetPath                              1 calls
    2>                  1 ms  GetNativeManifest                          1 calls
    2>                  2 ms  GetCopyToOutputDirectoryItems              1 calls
    2>                  5 ms  GetBuiltProjectOutputRecursive             2 calls
    2>       46 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAllField.XamarinAndroid.ServiceClient\OverAllField.XamarinAndroid.ServiceClient.csproj   4 calls
    2>                 21 ms  GetTargetPath                              1 calls
    2>                  0 ms  GetNativeManifest                          1 calls
    2>                  2 ms  GetCopyToOutputDirectoryItems              1 calls
    2>                 23 ms  GetBuiltProjectOutputRecursive             1 calls
    2>    87736 ms  C:\Development\Apps\FieldService-trunk\OverAllField.XamarinAndroid\OverAllField.Android\OverAllField.XamarinAndroid.csproj   1 calls
    

    第二个目标绩效摘要:(删除任何< 1000毫秒以减少字符数)

    2>     1955 ms  _GenerateJavaStubs                         1 calls
    2>     3083 ms  _CreateBaseApk                             1 calls
    2>     3467 ms  _UpdateAndroidResgen                       1 calls
    2>     8944 ms  _CompileToDalvikWithDx                     1 calls
    2>    66321 ms  _BuildAdditionalResourcesCache             1 calls
    

    第二个任务性能摘要:(同样,删除任何< 1000毫秒以减少字符数)

    2>     1245 ms  GenerateJavaStubs                          1 calls
    2>     2334 ms  ConvertResourcesCases                      3 calls
    2>     4637 ms  Aapt                                       2 calls
    2>     8941 ms  CompileToDalvik                            1 calls
    2>    66320 ms  GetAdditionalResourcesFromAssemblies       1 calls
    2>
    2>Build succeeded.
    2>
    2>Time Elapsed 00:01:27.73
    

    完整诊断构建日志here

    更新4

    Android支持版本23 here

    的完整诊断版本日志

    构建时间之间存在显着差异。 支持第24版:

    1>Project Performance Summary:
    1>    40103 ms  C:\Development\Apps\trunk\App.Droid\App.Droid.ServiceClient\App.Droid.ServiceClient.csproj   1 calls
    ...
    2>Project Performance Summary:
    2>    87736 ms  C:\Development\Apps\trunk\App.Droid\App.Droid\App.Droid.csproj   1 calls
    

    支持第23版:

    1>Project Performance Summary:
    1>      962 ms  C:\Development\Apps\trunk-r1029\App.Droid\App.Droid.ServiceClient\App.Droid.ServiceClient.csproj   1 calls
    2>Project Performance Summary:
    2>    18214 ms  C:\Development\Apps\trunk-r1029\App.Droid\App.Droid\App.Droid.csproj   1 calls
    

    两者都是使用目标Android 7.0和相同的Xamarin版本构建的,唯一的区别是Android支持库版本。这不是一个巨大的增长吗?

    提前致谢!

1 个答案:

答案 0 :(得分:7)

尽管这是一个非常“难以”回答的问题,因为构建时间可能取决于许多不同因素,但我可以引导您通过各种方法确定构建中的 导致延迟。在大多数情况下,通常是因为未经优化Resources。这可能是原始图像/音频/视频等资源,应该针对移动设备进行优化。

至于您提到的实验功能,您可以在此处查看发行说明:

https://developer.xamarin.com/releases/android/xamarin.android_7/xamarin.android_7.0/#Improved_Fast_Deployment

注意:这是实验性的,因此不能保证它足够稳定以便在生产中使用。

至于Build Times,我们需要知道项目中的瓶颈所在。为此,您需要在build-agent的命令中启用Diagnostic Build OutputMSBuild通过以下内容非常简单:

/v:diag/verbosity:diagnostic(或您想要的任何组合)

/clp:PerformanceSummary - 这将告诉我们使用每项任务的效果时间

https://msdn.microsoft.com/en-us/library/ms164311.aspx

EX:构建文件 - >新的Android项目:

1>Project Performance Summary:
1>     4087 ms  c:\users\dougl\documents\visual studio 2015\Projects\App26\App26\App26.csproj   1 calls
1>               4087 ms  Rebuild                                    1 calls
1>
1>Target Performance Summary:
1>        0 ms  GetCopyToOutputDirectoryXamlAppDefs        1 calls
1>        0 ms  BeforeRebuild                              1 calls
1>        0 ms  PrepareResources                           1 calls
1>        0 ms  _DefineBuildTargetAbis                     1 calls
1>        0 ms  UpdateAndroidAssets                        1 calls
1>        0 ms  AfterBuild                                 1 calls
1>        0 ms  AfterCompile                               1 calls
1>        0 ms  BeforeCompile                              1 calls
1>        0 ms  ExpressionBuildExtension                   1 calls
1>        0 ms  _GenerateCompileInputs                     1 calls
1>        0 ms  ResolveCodeAnalysisRuleSet                 1 calls
1>        0 ms  _LinkAssemblies                            1 calls
1>        0 ms  GetTargetPath                              1 calls
1>        0 ms  Build                                      1 calls
1>        0 ms  GenerateCompiledExpressionsTempFile        1 calls
1>        0 ms  _CopyConfigFiles                           1 calls
1>        0 ms  Compile                                    1 calls
1>        0 ms  Rebuild                                    1 calls
1>        0 ms  ModifyUnitTestPlatformVersion              1 calls
1>        0 ms  _RegisterMdbFilesWithFileWrites            1 calls
1>        0 ms  _CheckForCompileOutputs                    1 calls
1>        0 ms  _SetupDesignTimeBuildForIntellisense       1 calls
1>        0 ms  _SetTargetFrameworkMonikerAttribute        1 calls
1>        0 ms  _GenerateAndroidAssetsDir                  1 calls
1>        0 ms  _AddMultiDexDependencyJars                 1 calls
1>        0 ms  AfterResolveReferences                     1 calls
1>        0 ms  UpdateAndroidResources                     1 calls
1>        0 ms  _CheckInstantRunCondition                  1 calls
1>        0 ms  CleanPublishFolder                         1 calls
1>        0 ms  _CheckTargetFramework                      1 calls
1>        0 ms  _CollectMonoAndroidOutputs                 1 calls
1>        0 ms  _CopySourceItemsToOutputDirectory          1 calls
1>        0 ms  CompileRdlFiles                            1 calls
1>        0 ms  _CreateAdditionalResourceCache             4 calls
1>        0 ms  DesignTimeXamlMarkupCompilation            1 calls
1>        0 ms  AfterRebuild                               1 calls
1>        0 ms  _SeparateAppExtensionReferences            1 calls
1>        0 ms  ExpandSDKReferences                        1 calls
1>        0 ms  _ReadPropertiesCache                       1 calls
1>        0 ms  AfterResGen                                1 calls
1>        0 ms  CleanReferencedProjects                    1 calls
1>        0 ms  _CollectPCLPdbFiles                        1 calls
1>        0 ms  Clean                                      1 calls
1>        0 ms  SetWin32ManifestProperties                 1 calls
1>        0 ms  ResolveSDKReferences                       1 calls
1>        0 ms  CreateSatelliteAssemblies                  1 calls
1>        0 ms  DeleteBuildInfoResource                    1 calls
1>        0 ms  _ResolveMonoAndroidFramework               1 calls
1>        0 ms  PrepareResourceNames                       1 calls
1>        0 ms  _SetupInstantRun                           1 calls
1>        0 ms  _SetupDesignTimeBuildForBuild              1 calls
1>        0 ms  CoreBuild                                  1 calls
1>        0 ms  _CheckForDeletedResourceFile               1 calls
1>        0 ms  GetFrameworkPaths                          1 calls
1>        0 ms  _ValidateLinkMode                          1 calls
1>        0 ms  DeleteBuildInfoFile                        1 calls
1>        0 ms  _CollectPCLMdbFiles                        1 calls
1>        0 ms  _CompileDex                                1 calls
1>        0 ms  GetInstalledSDKLocations                   1 calls
1>        0 ms  BeforeClean                                1 calls
1>        0 ms  BuildOnlySettings                          1 calls
1>        0 ms  _ValidateResourceCache                     1 calls
1>        0 ms  BeforeResolveReferences                    1 calls
1>        0 ms  _CheckForContent                           1 calls
1>        0 ms  BeforeResGen                               1 calls
1>        0 ms  PrepareRdlFiles                            1 calls
1>        0 ms  AfterClean                                 1 calls
1>        0 ms  _SetupApplicationJavaClass                 1 calls
1>        0 ms  ValidationExtension                        1 calls
1>        0 ms  _IncludeInstanceRunReference               1 calls
1>        0 ms  ResolveReferences                          1 calls
1>        0 ms  CreateCustomManifestResourceNames          1 calls
1>        0 ms  ResGen                                     1 calls
1>        0 ms  BeforeBuild                                1 calls
1>        1 ms  _SplitProjectReferencesByFileExistence     1 calls
1>        1 ms  _GenerateSatelliteAssemblyInputs           1 calls
1>        1 ms  PrepareForRun                              1 calls
1>        1 ms  CleanXsdCodeGen                            1 calls
1>        1 ms  GenerateTargetFrameworkMonikerAttribute    1 calls
1>        1 ms  ResolveProjectReferences                   1 calls
1>        1 ms  AssignTargetPaths                          1 calls
1>        1 ms  _CreateIntermediateAssembliesDir           1 calls
1>        1 ms  GetCopyToOutputDirectoryItems              1 calls
1>        1 ms  PreXsdCodeGen                              1 calls
1>        1 ms  _GetReferenceAssemblyPaths                 1 calls
1>        1 ms  CoreResGen                                 1 calls
1>        1 ms  _CleanGeneratedDeploymentFiles             1 calls
1>        1 ms  SetBuildInfoDefaults                       1 calls
1>        1 ms  AssignProjectConfiguration                 1 calls
1>        1 ms  _CreatePackageWorkspace                    1 calls
1>        1 ms  _GetMonoPlatformJarPath                    1 calls
1>        1 ms  PrepareForBuild                            1 calls
1>        1 ms  _CalculateAdditionalResourceCacheDirectories   1 calls
1>        1 ms  _ComputeAndroidResourcePaths               1 calls
1>        1 ms  _SetEmbeddedWin32ManifestProperties        1 calls
1>        1 ms  _GetAddOnPlatformLibraries                 1 calls
1>        1 ms  _GetLibraryImports                         1 calls
1>        1 ms  SplitResourcesByCulture                    1 calls
1>        1 ms  GetReferenceAssemblyPaths                  1 calls
1>        1 ms  _CheckProjectItems                         1 calls
1>        1 ms  _AdjustJavacVersionArguments               1 calls
1>        1 ms  _CleanGeneratedDebuggingFiles              1 calls
1>        2 ms  _PrepareAssemblies                         1 calls
1>        2 ms  _FindJavaStubFiles                         1 calls
1>        2 ms  _ExtractLibraryProjectImports              1 calls
1>        2 ms  _StripEmbeddedLibraries                    1 calls
1>        2 ms  _CleanGetCurrentAndPriorFileWrites         1 calls
1>        2 ms  _GetAdditionalResourcesFromAssemblies      1 calls
1>        2 ms  _FindCompiledJavaFiles                     1 calls
1>        2 ms  _CheckDuplicateJavaLibraries               1 calls
1>        2 ms  _AddLibraryProjectsEmbeddedResourceToProject   1 calls
1>        3 ms  _ComputeAndroidAssetsPaths                 1 calls
1>        3 ms  CopyFilesToOutputDirectory                 1 calls
1>        3 ms  CoreClean                                  1 calls
1>        3 ms  _CollectPdbFiles                           1 calls
1>        3 ms  GetBuiltProjectOutputRecursive             1 calls
1>        3 ms  _CollectConfigFiles                        1 calls
1>        3 ms  _ValidateAndroidPackageProperties          1 calls
1>        3 ms  _WriteResolvedAssemblies                   1 calls
1>        4 ms  _CreatePropertiesCache                     1 calls
1>        4 ms  _ResolveMonoAndroidSdks                    1 calls
1>        4 ms  _AddDebugStaticResources                   1 calls
1>        4 ms  _BuildLibraryImportsCache                  1 calls
1>        4 ms  _CollectMdbFiles                           1 calls
1>        5 ms  _CheckForInvalidConfigurationAndPlatform   1 calls
1>        7 ms  _ResolveSatellitePaths                     1 calls
1>        7 ms  _GeneratePackageManagerJava                1 calls
1>        8 ms  _DetermineJavaLibrariesToCompile           1 calls
1>        9 ms  IncrementalClean                           1 calls
1>       10 ms  _AddStaticResources                        1 calls
1>       11 ms  _CleanMonoAndroidIntermediateDir           1 calls
1>       11 ms  _GenerateAndroidResourceDir                1 calls
1>       12 ms  _CleanMsymArchive                          1 calls
1>       18 ms  _SetLatestTargetFrameworkVersion           1 calls
1>       20 ms  ResolveAssemblyReferences                  1 calls
1>       27 ms  ImplicitlyExpandDesignTimeFacades          1 calls
1>       30 ms  _BuildSdkCache                             1 calls
1>       35 ms  _ConvertPdbFiles                           1 calls
1>       45 ms  _CheckTargetFrameworks                     1 calls
1>       46 ms  _ResolveLibraryProjectImports              1 calls
1>       52 ms  _CreateBaseApk                             1 calls
1>       66 ms  _BuildAdditionalResourcesCache             1 calls
1>       72 ms  _CopyMdbFiles                              1 calls
1>       78 ms  _ResolveAssemblies                         1 calls
1>      115 ms  _UpdateAndroidResgen                       1 calls
1>      167 ms  _GenerateJavaStubs                         1 calls
1>      189 ms  _GetPrimaryCpuAbi                          1 calls
1>      453 ms  _CopyIntermediateAssemblies                1 calls
1>      515 ms  _LinkAssembliesNoShrink                    1 calls
1>      657 ms  _CompileToDalvikWithDx                     1 calls
1>      664 ms  _CompileJava                               1 calls
1>      677 ms  CoreCompile                                1 calls
1>
1>Task Performance Summary:
1>        0 ms  CallTarget                                 1 calls
1>        0 ms  MSBuild                                    1 calls
1>        0 ms  ResolveCodeAnalysisRuleSet                 1 calls
1>        0 ms  ReadLinesFromFile                          2 calls
1>        0 ms  GetFrameworkPath                           1 calls
1>        0 ms  FindAppConfigFile                          1 calls
1>        0 ms  AssignCulture                              1 calls
1>        1 ms  GetAppSettingsDirectory                    1 calls
1>        1 ms  ConvertToAbsolutePath                      1 calls
1>        1 ms  RemoveDuplicates                           3 calls
1>        1 ms  AssignTargetPath                           6 calls
1>        1 ms  CollectLibraryAssets                       1 calls
1>        1 ms  AssignProjectConfiguration                 1 calls
1>        1 ms  GetMonoPlatformJar                         1 calls
1>        1 ms  CalculateAdditionalResourceCacheDirectories   1 calls
1>        1 ms  CreateTemporaryDirectory                   2 calls
1>        1 ms  GetAndroidDefineConstants                  1 calls
1>        1 ms  GetAddOnPlatformLibraries                  1 calls
1>        1 ms  ReadImportedLibrariesCache                 1 calls
1>        1 ms  ReadAdditionalResourcesFromAssemblyCache   1 calls
1>        1 ms  CheckProjectItems                          1 calls
1>        1 ms  GetReferenceAssemblyPaths                  2 calls
1>        1 ms  AdjustJavacVersionArguments                1 calls
1>        2 ms  FindUnderPath                              7 calls
1>        2 ms  Message                                   17 calls
1>        2 ms  ReadLibraryProjectImportsCache             1 calls
1>        2 ms  MakeDir                                    6 calls
1>        2 ms  CreateAndroidResourceStamp                 1 calls
1>        2 ms  CreateProperty                            42 calls
1>        2 ms  CopyIfChanged                              1 calls
1>        2 ms  GetAndroidPackageName                      2 calls
1>        2 ms  GetJavaPlatformJar                         1 calls
1>        2 ms  GetExtraPackages                           2 calls
1>        2 ms  CheckDuplicateJavaLibraries                1 calls
1>        2 ms  CreateManagedLibraryResourceArchive        1 calls
1>        3 ms  RemoveUnknownFiles                         1 calls
1>        3 ms  AndroidComputeResPaths                     2 calls
1>        3 ms  CreateResgenManifest                       1 calls
1>        4 ms  GetImportedLibraries                       1 calls
1>        4 ms  GetFilesThatExist                          3 calls
1>        6 ms  Touch                                      7 calls
1>        6 ms  CopyGeneratedJavaResourceClasses           2 calls
1>        7 ms  CreateItem                                20 calls
1>        7 ms  GeneratePackageManagerJava                 1 calls
1>        7 ms  DetermineJavaLibrariesToCompile            1 calls
1>        8 ms  Delete                                    28 calls
1>       10 ms  CopyResource                               4 calls
1>       11 ms  RemoveDirFixed                             5 calls
1>       12 ms  WriteLinesToFile                           5 calls
1>       17 ms  ReadResolvedSdksCache                      1 calls
1>       27 ms  ResolveAssemblyReference                   2 calls
1>       29 ms  GenerateResourceDesigner                   1 calls
1>       29 ms  ResolveSdks                                1 calls
1>       29 ms  ConvertResourcesCases                      3 calls
1>       35 ms  ConvertDebuggingFiles                      1 calls
1>       45 ms  CheckTargetFrameworks                      1 calls
1>       45 ms  ResolveLibraryProjectImports               1 calls
1>       52 ms  CopyMdbFiles                               1 calls
1>       65 ms  GetAdditionalResourcesFromAssemblies       1 calls
1>       77 ms  ResolveAssemblies                          1 calls
1>       92 ms  Aapt                                       2 calls
1>      161 ms  GenerateJavaStubs                          1 calls
1>      186 ms  GetPrimaryCpuAbi                           1 calls
1>      479 ms  Copy                                       7 calls
1>      513 ms  LinkAssemblies                             1 calls
1>      655 ms  CompileToDalvik                            1 calls
1>      660 ms  Csc                                        1 calls
1>      664 ms  Javac                                      1 calls
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:04.08

请注意,我们可以判断此构建需要多长时间: 4秒。但是,这并不能解决您的问题,但是如果使用这样的正确日志,我们就可以调查TargetTask并找出您的项目存在瓶颈的问题。我的猜测是aapt,但这只是因为即使是Android Studio也会挂在这里,因为这个工具在Android SDK内,它负责打包android资产。

修改

看起来这个构建需要大约2分钟来构建2个项目。一个在C:\Development\Apps\trunk\App.Droid\App.Droid.ServiceClient\App.Droid.ServiceClient.csproj,另一个在C:\Development\Apps\trunk\App.Droid\App.Droid\App.Droid.csproj(分别为40/87秒)。对于拥有Android支持/ Google Play的许多第三方依赖项目的项目来说,这似乎很正常。您可以搜索字符串Task "GetAdditionalResourcesFromAssemblies以显示定义它的6个位置。由于2个Android项目,此处调用了2个任务。

将Android Studio项目与许多外部依赖项进行比较并比较时间可能是值得的。我知道我们目前在GetAdditionalResourcesFromAssemblies任务方面正在进行相当多的工作。但是,在第9-10周期之前,这项工作将无法使用。这项工作目前是拉动请求的一部分:

https://github.com/xamarin/xamarin-android/pull/296

(由于提交时间,你可以说它几乎是全新的)。

从这个任务可以看出,将有以下改进:

  

当前任务始终从谷歌下载数据。这是不相干的   是否已存在于Android sdk目录中的文件。   此提交更改了GetAdditionalResourcesFromAssemblies任务   查看android sdk中的“extras”文件夹中的所需内容   .aar文件。这意味着如果用户拥有最新的sdk,则会有   几乎不需要从互联网上下载文件。

还有PR - https://github.com/xamarin/xamarin-android/pull/292(谢谢@Mikhail)

哪些地址重用计算的哈希值,这也可以降低构建时间。

TLDR; GetAdditionalResourcesFromAssemblies需要更多工作才能缩短构建时间。目前正在开展这项工作。

编辑2:

目前在包含对https://www.nuget.org/packages/Xamarin.Build.Download/

的依赖关系的支持库中解决了这个问题