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é:
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.
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:
Alors, qu'est-ce qui a changé entre la révision 1029 et 1030 de mon application?
Compile using Android version
à Android 7.0 dans les propriétés du projet 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!
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:
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/