14

В настоящее время сборка/развертывание моего приложения Xamarin.Android очень медленное. Я не помню, чтобы это было так медленно.Slow app build - Xamarin для Visual Studio

Я включил:

  • Использование совместно выполнения
  • быстрого развертывания

Включение или отключение этих параметров не имеет никакого значения. В обоих сценариях требуется около 2 минут и 20 секунд (до 3 минут!) Для создания/развертывания моего приложения. Использование реального устройства или эмулятора Visual Studio для Android также не имеет значения.

Почему это может быть так медленно? Я не использую правильные настройки?

UPDATE 2

Вчера (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

UPDATE 3

Джон, спасибо за вашу помощь.

В то же время, я провел некоторое исследование самостоятельно в журналах сборки и нашел продолжительность выполнения задачи сборки. Я обнаружил, что как-то GetAdditionalResourcesFromAssemblies занимает много времени.

Количество ресурсов, которые я имею в приложение было существенно не изменится, так что это заставило меня задуматься: это может быть другой узел, который я использую ..

Затем я сделал проверку пересмотра 1029 (который был последней ревизией, которая заняла около минуты, чтобы построить) и попыталась отладить ее в обновленной среде. Он по-прежнему построен в 1m30s ...

Итак:

  • Это, вероятно, не обновление VS Xamarin (иначе редакция 1029 будет строить медленно, а)
  • Это, вероятно, не быстрое развертывание, продолжительность увеличилась в процесс сборки

Так что же изменилось между версией 1029 и 1030 моего приложения?

  1. Обновлено Xamarin для Visual Studio для 4.2.0.719
  2. Installed Android 7.0 SDK платформа в Android SDK Manager,
  3. Изменены Compile using Android version для Android 7.0 в свойствах проекта
  4. Обновлено Xamarin.Android Поддержка библиотеки от 23.4.0.1 до 24.2.1

Изменения 4 был почему я обновляемым в на первом месте, я хотел использовать Bottomsheet, который был улучшен в версии 24. Но поддержка библиотеки nugets была нацелена на Android 7.0, поэтому мне пришлось сделать 1-3, чтобы иметь возможность обновлять библиотеки поддержки.

Возможно, что-то изменилось в привязках библиотеки поддержки, которые вызвали все это? Я проверил интернет для других разработчиков, имеющих эту проблему, и нашел this на форуме Xamarin. Установка AndroidExplicitCrunch построить свойство на 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 из этих сводок как-то), но я не могу включить его в этом вопросе, потому что она будет превышать предел характера тела. Меньшая версия второго резюме:

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

UPDATE 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 поддержки. Разве это не огромный рост?

Заранее благодарен!

+0

Так '' Target' из _BuildAdditionalResourcesCache' берет навсегда. Что может запускать «Задача» из «GetAdditionalResourcesFromAssemblies». Я полагаю, что здесь происходит потенциально то, что, когда вы перешли на поддержку Android, вам необходимо было загрузить и кешировать последнюю версию. Я бы заподозрил, что новые сборки будут меньше времени? Мне понадобится полный вывод диагностической сборки, чтобы увидеть внутренности этой 'Задачи'. Пожалуйста, не стесняйтесь загружать это. –

+0

Хорошо, это объясняет увеличение. Это не только первая сборка, но и эта медленная, но с момента ее создания 8 ноября я создал приложение сотни раз (разработка приложения), и, к сожалению, для сборки и развертывания требуется еще 3 минуты или больше. Я попытаюсь загрузить полный журнал создания через минуту – avb

+0

Просто добавлен полный журнал построения к вопросу. Спасибо за ваше время – avb

ответ

7

Хотя это очень «трудный» вопрос, так как время сборки может зависеть от многих разных факторов, я могу пройти через способы определения того, что в вашей сборке вызывает задержку. В большинстве случаев это обычно из-за неоптимизированного Resources. Это могут быть ресурсы, такие как сырые изображения/аудио/видео, которые действительно должны быть оптимизированы для мобильных устройств.

Что касается экспериментальной функциональности вы упомянули, вы можете просмотреть замечания по выпуску здесь:

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

Примечание: Это экспериментальное, таким образом, это не гарантирует, что будет достаточно стабильна для использования в производство.

Что касается Build Times, нам нужно знать, где узкое место находится в вашем проекте. Для этого вам нужно включить Diagnostic Build Output в команде вашего агента. Это довольно просто с MSBuild через:

/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 секунды. Однако это не ответит на ваш случай, но с соответствующим журналом, подобным этому, мы можем затем исследовать это Target или Task и выяснить, что ваш проект является узким местом. Мое предположение было бы aapt, но это просто потому, что даже Android Studio будет висеть здесь, поскольку этот инструмент находится внутри Android SDK, и он отвечает за упаковку активов Android.

EDIT:

Похоже, этот билд принял ~ 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.

Возможно, стоит сравнить проект Android Studio с множеством внешних зависимостей и сравнить время. Я действительно знаю, что у нас в настоящее время довольно много работы в отношении задачи GetAdditionalResourcesFromAssemblies. Однако эта работа будет недоступна до цикла 9-10. Эта работа в настоящее время помимо запроса тягового:

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

(Вы можете сказать, что это почти совершенно новой из-за время фиксации).

Как вы можете сказать от этой задачи, будут следующие улучшения:

Текущая задача всегда загружает данные из Google. Это независимо от того, существуют ли файлы в каталоге Android sdk уже . Эта команда изменяет задачу GetAdditionalResourcesFromAssemblies , чтобы просмотреть папку «extras» в sdk android для требуемого файла .aar. Это будет означать, что если у пользователя есть обновленный sdk, будет почти не нужно загружать файлы из Интернета.

Там также PR - https://github.com/xamarin/xamarin-android/pull/292 (Спасибо @Mikhail)

Какие адреса повторное использование вычисленного хэш, который также может снизить время сборки.

TLDR;GetAdditionalResourcesFromAssemblies требует немного больше работы для времени сборки, чтобы быть короче. Это в настоящее время работает.

EDIT 2:

Это в настоящее время решается в библиотеках поддержки, которые включают в себя зависимость к https://www.nuget.org/packages/Xamarin.Build.Download/

+0

Спасибо за вашу помощь! Ценить это. Я обновил свой вопрос тем, что сделал сам, чтобы разобраться в этом вопросе. Также был включен журнал диагностики, как вы просили. Надеюсь, это поможет найти проблему. Еще раз спасибо! – avb

+0

У этого действительно есть много зависимостей. Это довольно большое приложение. Я понимаю, что каждая зависимость занимает х количество времени сборки, но я задал вопрос, потому что я обнаружил, что значительное увеличение времени сборки очень странно. Одна вещь, которую я помню, заключается в том, что библиотека поддержки v4 была разделена на 5 различных пакетов. Это произошло в версии 24.2.0, поэтому добавлены некоторые зависимости, так как я обновлялся с 23.4.0.1. См. Https://developer.android.com/topic/libraries/support-library/revisions.html#24-2-0-v4-refactor. Может ли это быть проблемой? Я рад слышать, что вы работаете над улучшением времени сборки. – avb

+1

Это может быть частично проблема. Мне пришлось бы видеть, как вы выходите из журнала сборки, в котором вы используете ту же версию Xamarin, но разные версии поддерживающих библиотек (23 против 24). Причина, по которой эти элементы «разделены», объясняется тем, что Google сделал это в последней версии. Вы можете увидеть это в истории изменений: https://developer.android.com/topic/libraries/support-library/revisions.html#24-2-0-v4-refactor (вручную проверьте 24.2.0, поскольку ссылка doesn я работаю) Я верю, что это исправление в этой Задаче разрешит большую часть проблемы в вашем времени сборки. –

Смежные вопросы