web-dev-qa-db-fra.com

Construction d'application lente - Xamarin pour Visual Studio

La construction/déploiement de mon application Xamarin.Android est extrêmement lente ces jours-ci. Je ne me souviens pas que ce soit si lent auparavant.

J'ai activé:

  • Utiliser le runtime partagé
  • Déploiement rapide

L'activation ou la désactivation de ces paramètres ne fait aucune différence. Dans les deux scénarios, il faut environ 2 minutes et 20 secondes (jusqu'à plus de 3 minutes!) Pour créer/déployer mon application. L'utilisation d'un véritable appareil ou de l'émulateur Visual Studio pour Android ne fait pas non plus de différence.

Pourquoi cela pourrait-il être si lent? Suis-je pas en utilisant les bons paramètres?

MISE À JOUR 2

Hier (14 novembre), j'ai mis à jour Xamarin.VS vers 4.2.1.58. Aucune amélioration de la durée de construction.

Nous utilisons TeamCity pour créer des versions de sortie de notre application, les statistiques TeamCity montrent parfaitement de quoi je parle.

Dans le graphique ci-dessous, j'ai sélectionné le dernier trimestre comme plage de dates. Voir l'augmentation majeure de la durée de construction. Maintenant, cela ne me dérange pas d'attendre 3 minutes pour une version, mais ce n'est pas acceptable lors du débogage.

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

MISE À JOUR 3

Jon, merci pour votre aide.

En attendant, j'ai moi-même fait quelques recherches dans les journaux de build et trouvé la durée par tâche de build. J'ai trouvé que GetAdditionalResourcesFromAssemblies prenait beaucoup de temps.

La quantité de ressources que j'ai dans l'application n'a pas changé de façon spectaculaire, donc cela m'a fait penser: pourrait-il être un autre assemblage que j'utilise ..

J'ai ensuite vérifié la révision 1029 (qui était la dernière révision qui a pris environ une minute à construire) et j'ai essayé de la déboguer dans l'environnement mis à jour. Il a encore construit en 1m30s ...

Alors:

  • Ce n'est probablement pas la mise à jour de VS Xamarin (sinon la révision 1029 serait également lente)
  • Ce n'est probablement pas un déploiement rapide, la durée a augmenté dans le processus de construction

Alors, qu'est-ce qui a changé entre la révision 1029 et 1030 de mon application?

  1. Mise à jour de Xamarin pour Visual Studio vers 4.2.0.719
  2. Installé Android 7.0 Plateforme SDK dans Android SDK Manager
  3. Modifié Compile using Android version à Android 7.0 dans les propriétés du projet
  4. Bibliothèques de support Xamarin.Android mises à jour du 23.4.0.1 au 24.2.1

Le changement 4 était la raison pour laquelle j'ai mis à jour en premier lieu, je voulais utiliser Bottomsheet, qui a été amélioré dans la version 24. Mais le support les nugets de bibliothèque visaient Android 7.0, donc j'ai dû faire 1-3 pour pouvoir mettre à jour les bibliothèques de support.

Quelque chose aurait-il pu changer dans les liaisons de la bibliothèque de support qui a causé tout cela? J'ai vérifié sur Internet d'autres développeurs rencontrant ce problème et j'ai trouvé this sur le forum Xamarin. La définition de AndroidExplicitCrunch build property sur true semble y remédier, mais lorsque j'ai essayé cela, j'ai eu une autre erreur de construction.

Quoi qu'il en soit, c'est ce que j'ai essayé en attendant. Maintenant, comme demandé, voici mon journal de construction de diagnostic:

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

Il y a un deuxième résumé (le journal a en quelque sorte 2 de ces résumés), mais je ne peux pas l'inclure dans la question, car il dépasserait la limite de caractère du corps. Version plus petite du deuxième résumé:

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

Résumé des performances de la deuxième cible: (suppression de tout élément <1000 ms pour réduire les caractères)

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

Résumé des performances de la deuxième tâche: (encore une fois, rien supprimé <1000 ms pour réduire les caractères)

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

Journal de construction de diagnostic complet ici

MISE À JOUR 4

Journal de build de diagnostic complet avec Android supporte la version 23 ici

Il existe une différence significative entre les temps de construction. Prise en charge de la version 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

Prise en charge de la version 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

Les deux sont construits avec la cible Android 7.0 et la même version de Xamarin, la seule différence est la Android Version de la bibliothèque de support. N'est-ce pas une énorme augmentation?

Merci d'avance!

21
avb

Bien qu'il s'agisse d'une question très "difficile" à répondre, car les temps de construction peuvent dépendre de nombreux facteurs différents, je peux vous expliquer comment en quoi votre build est à l'origine du retard. Dans la plupart des cas, c'est généralement à cause de Resources non optimisé. Il peut s'agir de ressources telles que des images brutes/audio/vidéo qui devraient vraiment être optimisées pour les mobiles.

En ce qui concerne la fonctionnalité expérimentale que vous avez mentionnée, vous pouvez consulter les notes de version ici:

https://developer.xamarin.com/releases/Android/xamarin.Android_7/xamarin.Android_7.0/#Improved_Fast_Deployment

Remarque: Ceci est expérimental, donc cela ne garantit pas qu'il sera suffisamment stable pour être utilisé en production.

Quant à Build Times, nous devons savoir où se situe le goulot d'étranglement dans votre projet. Pour ce faire, vous devez activer Diagnostic Build Output dans la commande de votre agent de build. C'est assez simple avec MSBuild via:

/v:diag ou /verbosity:diagnostic (Ou quelle que soit la combinaison que vous vouliez)

et

/clp:PerformanceSummary - Qui dira d'utiliser les temps de performance de chaque tâche

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

EX: Création d'un fichier-> Nouveau Android Project:

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

Notez que nous pouvons dire combien de temps cette construction a pris: 4 secondes . Cependant, cela ne répond pas à votre cas, mais avec un journal approprié comme celui-ci, nous pouvons alors enquêter sur ce Target ou Task et déterminer sur quoi votre projet est goulot d'étranglement. Je suppose que aapt, mais c'est simplement parce que même Android Studio se bloquerait ici car cet outillage est à l'intérieur du Android SDK et responsable de l'emballage Android actifs.

MODIFIER:

Il semble que cette génération ait pris environ 2 minutes pour créer les 2 projets. L'un étant dans C:\Development\Apps\trunk\App.Droid\App.Droid.ServiceClient\App.Droid.ServiceClient.csproj et l'autre dans C:\Development\Apps\trunk\App.Droid\App.Droid\App.Droid.csproj (40/87 secondes respectivement). Cela semble tout à fait normal pour un projet avec autant de dépendances tierces vers Android Support/Google Play. Vous pouvez rechercher la chaîne Task "GetAdditionalResourcesFromAssemblies pour afficher 6 endroits où cela est défini. Il y a 2 tâches invoquées ici en raison des 2 Android Android.

Cela pourrait valoir la peine de comparer un Android Studio avec autant de dépendances externes et comparer le temps. Je sais que nous avons actuellement pas mal de travail en cours en ce qui concerne le GetAdditionalResourcesFromAssemblies Tâche. Cependant, ce travail ne sera pas disponible avant le cycle 9-10. Ce travail est actuellement en dehors d'une demande d'extraction:

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

(Vous pouvez dire que c'est presque neuf en raison du temps de validation).

Comme vous pouvez le voir dans cette tâche, les améliorations suivantes seront apportées:

La tâche actuelle télécharge toujours les données de Google. Cela indépendamment du fait que les fichiers existent déjà dans le répertoire Android sdk. Ce commit modifie la tâche GetAdditionalResourcesFromAssemblies pour qu'elle apparaisse dans le dossier "extras" du Android sdk pour le fichier .aar requis. Cela signifie que si un utilisateur possède un sdk à jour, il sera presque inutile de télécharger les fichiers depuis Internet.

Il y a aussi un PR - https://github.com/xamarin/xamarin-Android/pull/292 (Merci @Mikhail)

Qui traite de la réutilisation du hachage calculé, ce qui peut également réduire les temps de construction.

TLDR; GetAdditionalResourcesFromAssemblies a besoin d'un peu plus de travail pour que les temps de construction soient plus courts. Ceci est actuellement en préparation.

EDIT 2:

Ce problème est actuellement résolu dans les bibliothèques de support qui incluent une dépendance à https://www.nuget.org/packages/Xamarin.Build.Download/

8
Jon Douglas