缩短Xamarin.Android项目的构建时间

缩短Xamarin.Android项目的构建时间,xamarin,build,msbuild,xamarin.android,visual-studio-mac,Xamarin,Build,Msbuild,Xamarin.android,Visual Studio Mac,目前,我们的Android项目的构建时间非常长 对于拥有以下数量资产的Xamarin Android项目来说,这(参见下面的构建日志)是正常的构建时间吗 350个抽绳 210布局文件 65个值的xml文件 你有什么建议来加快构建时间吗?这真让人讨厌 另外,我们还有一个问题,每次更改xml文件中的某些内容时(例如更改布局文件中的颜色时),我们都需要进行干净的构建 以下是我为Android仿真器执行干净调试构建时的构建日志: Done building project "MyApp.Droid.

目前,我们的Android项目的构建时间非常长

对于拥有以下数量资产的Xamarin Android项目来说,这(参见下面的构建日志)是正常的构建时间吗

  • 350个抽绳
  • 210布局文件
  • 65个值的xml文件
你有什么建议来加快构建时间吗?这真让人讨厌

另外,我们还有一个问题,每次更改xml文件中的某些内容时(例如更改布局文件中的颜色时),我们都需要进行干净的构建

以下是我为Android仿真器执行干净调试构建时的构建日志:

Done building project "MyApp.Droid.csproj".

Project Evaluation Performance Summary:
139 ms /Users/stefan/Projects/myapp/Core/CoreApp.Core.csproj 2 calls

Project Performance Summary:
70 ms /Users/stefan/Projects/myapp/Core/CoreApp.Core.csproj 4 calls
166920 ms /Users/stefan/Projects/myapp/Droid/CoreApp.Droid.csproj 1 calls

Target Performance Summary:
* ms GetCopyToOutputDirectoryItems 1 calls
0 ms PrepareResourceNames 1 calls
0 ms BeforeResGen 1 calls
0 ms AfterBuild 1 calls
0 ms RunCodeAnalysis 1 calls
0 ms _XamarinBuildAddDownloadedItems 1 calls
0 ms _XamarinBuildDownload 1 calls
0 ms SetWin32ManifestProperties 1 calls
0 ms RunXamarinPackageAnalysis 1 calls
0 ms BeforeResolveReferences 1 calls
0 ms GenerateManifests 1 calls
0 ms RunXamarinProjectAnalysis 1 calls
0 ms UpdateAndroidResources 1 calls
0 ms _XamarinBuildDownloadMasterTarget 1 calls
0 ms PrepareProjectReferences 1 calls
0 ms ResolveNativeReferences 1 calls
0 ms CreateCustomManifestResourceNames 1 calls
0 ms ResolveReferences 1 calls
0 ms GetFrameworkPaths 1 calls
0 ms ResGen 1 calls
0 ms CoreBuild 1 calls
0 ms PrepareForRun 1 calls
0 ms BeforeBuild 1 calls
0 ms CreateSatelliteAssemblies 1 calls
0 ms AfterResolveReferences 1 calls
0 ms Compile 1 calls
0 ms _CopySourceItemsToOutputDirectory 1 calls
0 ms _LinkAssemblies 1 calls
0 ms PrepareResources 1 calls
0 ms AfterResGen 1 calls
0 ms _ResolveMonoAndroidFramework 1 calls
0 ms UpdateAndroidAssets 1 calls
0 ms BeforeCompile 1 calls
0 ms GetTargetFrameworkProperties 1 calls
0 ms AfterCompile 1 calls
0 ms _UpdateAndroidResources 1 calls
0 ms _SetupDesignTimeBuildForBuild 1 calls
0 ms BuildOnlySettings 1 calls
0 ms BclBuildSetRunningFullBuild 1 calls
0 ms _SetupDesignTimeBuildForIntellisense 1 calls
0 ms _XamarinAndroidSupportVectorDrawableArgs 1 calls
0 ms ResolveSDKReferences 1 calls
0 ms _IncludeInstanceRunReference 1 calls
0 ms _ValidateLinkMode 1 calls
0 ms _CheckTargetFramework 1 calls
0 ms _RoslynPublicSignHack 1 calls
0 ms Build 1 calls
0 ms _EmitXamarinProjectAnalysisResults 1 calls
0 ms _CheckForContent 1 calls
0 ms _EmitXamarinPackageAnalysisResults 1 calls
0 ms ComputeIntermediateSatelliteAssemblies 1 calls
0 ms ExpandSDKReferences 1 calls
0 ms ProcessGoogleServicesJsonChecks 1 calls
0 ms _SetupInstantRun 1 calls
0 ms _SetupApplicationJavaClass 1 calls
0 ms BclBuildGetTargetPath 1 calls
0 ms _SeparateAppExtensionReferences 1 calls
0 ms _SetupDesignTimeBuildForCompile 1 calls
0 ms GetTargetPath 2 calls
0 ms _ReadPropertiesCache 1 calls
0 ms GetInstalledSDKLocations 1 calls
0 ms _SetTargetFrameworkMonikerAttribute 1 calls
0 ms GetNativeManifest 1 calls
0 ms _GetReferenceAssemblyPaths 1 calls
0 ms _CheckForDeletedResourceFile 1 calls
0 ms BclBuildAddProjectReferenceProperties 1 calls
0 ms _CheckForCompileOutputs 1 calls
0 ms _AddMultiDexDependencyJars 1 calls
0 ms _DefineBuildTargetAbis 1 calls
0 ms _CheckInstantRunCondition 1 calls
0 ms _GenerateSatelliteAssemblyInputs 1 calls
0 ms _CheckProjectItems 1 calls
0 ms _ValidateResourceCache 1 calls
0 ms VectorDrawableCheckBuildToolsVersionTask 1 calls
0 ms _CalculateAdditionalResourceCacheDirectories 1 calls
0 ms _SetEmbeddedWin32ManifestProperties 1 calls
1 ms _CreateAdditionalResourceCache 5 calls
1 ms _XbdRestoreItems_supportv4 1 calls
1 ms _XbdRestoreItems_transition 1 calls
1 ms _XbdRestoreItems_supportcoreui 1 calls
1 ms _XbdRestoreItems_supportcompat 1 calls
1 ms _CreatePackageWorkspace 1 calls
1 ms _XbdRestoreItems_supportannotations 1 calls
1 ms _XbdRestoreItems_supportfragment 1 calls
1 ms _XbdRestoreItems_firebaseanalytics 1 calls
1 ms _XbdRestoreItems_firebaseiid 1 calls
1 ms _XbdRestoreItems_recyclerviewv7 1 calls
1 ms _XbdRestoreItems_firebasecommon 1 calls
1 ms _XbdRestoreItems_playservicesmaps 1 calls
1 ms _XbdRestoreItems_firebaseanalyticsimpl 1 calls
1 ms _XbdRestoreItems_supportvectordrawable 1 calls
1 ms _XbdRestoreItems_supportmediacompat 1 calls
1 ms _XbdRestoreItems_playservicesanalytics 1 calls
1 ms _XbdRestoreItems_playservicesbase 1 calls
1 ms _XbdRestoreItems_playservicestasks 1 calls
1 ms _XbdRestoreItems_playservicesads 1 calls
1 ms _XbdRestoreItems_playservicesgass 1 calls
1 ms _XbdRestoreItems_supportcoreutils 1 calls
1 ms _XbdRestoreItems_playservicesanalyticsimpl 1 calls
1 ms _XbdRestoreItems_playservicesadslite 1 calls
1 ms _XbdRestoreItems_playservicestagmanagerv4impl 1 calls
1 ms _XbdRestoreItems_customtabs 1 calls
1 ms _XbdRestoreItems_playservicesgcm 1 calls
1 ms _XbdRestoreItems_playservicesbasement 1 calls
1 ms _XbdRestoreItems_playservicesclearcut 1 calls
1 ms _XbdRestoreItems_design 1 calls
1 ms _XbdRestoreItems_playservicesiid 1 calls
1 ms _XbdRestoreItems_cardviewv7 1 calls
1 ms _XbdRestoreItems_appcompatv7 1 calls
1 ms GenerateTargetFrameworkMonikerAttribute 1 calls
1 ms _SplitProjectReferencesByFileExistence 2 calls
1 ms _GenerateCompileInputs 1 calls
1 ms _GetAdditionalResourcesFromAssemblies 1 calls
1 ms _GetMonoPlatformJarPath 1 calls
1 ms _CheckForInvalidConfigurationAndPlatform 1 calls
1 ms _StripEmbeddedLibraries 1 calls
1 ms _CompileDex 1 calls
1 ms CoreResGen 1 calls
1 ms AssignProjectConfiguration 1 calls
1 ms _GetLibraryImports 1 calls
1 ms GetTargetPathWithTargetPlatformMoniker 2 calls
1 ms _XbdRestoreItems_animatedvectordrawable 1 calls
2 ms CheckAbiAndMinSDK 1 calls
2 ms _ExtractLibraryProjectImports 1 calls
2 ms _GetAddOnPlatformLibraries 1 calls
2 ms CreateManifestResourceNames 1 calls
2 ms SplitResourcesByCulture 1 calls
2 ms _ComputeAndroidAssetsPaths 1 calls
2 ms _CheckDuplicateJavaLibraries 1 calls
4 ms _ValidateAndroidPackageProperties 1 calls
4 ms GetReferenceAssemblyPaths 1 calls
4 ms _CreatePropertiesCache 1 calls
4 ms BclBuildValidateNugetPackageReferences 1 calls
5 ms _CreateIntermediateAssembliesDir 1 calls
5 ms _AddDebugStaticResources 1 calls
6 ms PrepareForBuild 1 calls
9 ms _XamarinAndroidBuildResourceRestore 1 calls
10 ms AssignTargetPaths 2 calls
11 ms _ResolveMonoAndroidSdks 1 calls
12 ms _WriteResolvedAssemblies 1 calls
13 ms _PrepareAssemblies 1 calls
13 ms BclBuildDetermineReferencesToRedirect 1 calls
14 ms _CopyConfigFiles 1 calls
16 ms _ConvertPdbFiles 1 calls
16 ms _GeneratePackageManagerJava 1 calls
20 ms _AddStaticResources 1 calls
26 ms _CollectConfigFiles 1 calls
30 ms _GetPrimaryCpuAbi 1 calls
35 ms _CollectPdbFiles 1 calls
36 ms _XamarinAndroidBuildAarRestore 1 calls
37 ms _CollectMdbFiles 1 calls
39 ms _DetermineJavaLibrariesToCompile 1 calls
42 ms CopyFilesToOutputDirectory 1 calls
67 ms _CollectMonoAndroidOutputs 1 calls
69 ms _GenerateCompileDependencyCache 1 calls
81 ms ImplicitlyExpandDesignTimeFacades 1 calls
84 ms _GenerateAndroidAssetsDir 1 calls
87 ms FindReferenceAssembliesForReferences 1 calls
93 ms _GetProjectReferenceTargetFrameworkProperties 2 calls
103 ms _ComputeAndroidResourcePaths 1 calls
105 ms ResolveProjectReferences 1 calls
122 ms _BuildAdditionalResourcesCache 1 calls
128 ms _CheckTargetFrameworks 1 calls
148 ms _XamarinAndroidBuildAarProguardConfigs 1 calls
195 ms _BuildLibraryImportsCache 1 calls
204 ms _CopyMdbFiles 1 calls
218 ms _ResolveSatellitePaths 1 calls
236 ms _FindJavaStubFiles 1 calls
245 ms ResolveAssemblyReferences 1 calls
259 ms IncrementalClean 1 calls
265 ms _FindCompiledJavaFiles 1 calls
384 ms _CleanGetCurrentAndPriorFileWrites 1 calls
402 ms _AdjustJavacVersionArguments 1 calls
449 ms _SetLatestTargetFrameworkVersion 1 calls
616 ms _ResolveAssemblies 1 calls
2325 ms _CopyFilesMarkedCopyLocal 1 calls
3294 ms _CopyIntermediateAssemblies 1 calls
3582 ms CoreCompile 1 calls
3708 ms _LinkAssembliesNoShrink 1 calls
4267 ms _GenerateAndroidResourceDir 1 calls
5510 ms _ResolveLibraryProjectImports 1 calls
6131 ms _GenerateJavaDesignerForComponent 1 calls
15153 ms _CompileJava 1 calls
15530 ms _GenerateJavaStubs 1 calls
27014 ms _CreateBaseApk 1 calls
34145 ms _CompileToDalvikWithDx 1 calls
41166 ms _UpdateAndroidResgen 1 calls
(* = timing was not recorded because of reentrancy)

Task Performance Summary:
* ms MSBuild 4 calls
0 ms GetFrameworkPath 1 calls
0 ms CheckProjectItems 1 calls
0 ms GetAppSettingsDirectory 1 calls
0 ms CalculateAdditionalResourceCacheDirectories 1 calls
0 ms VectorDrawableCheckBuildToolsVersionTask 1 calls
0 ms ResolveNonMSBuildProjectOutput 1 calls
0 ms GetReferenceAssemblyPaths 2 calls
0 ms GetAndroidDefineConstants 1 calls
1 ms AssignCulture 1 calls
1 ms ReadAdditionalResourcesFromAssemblyCache 1 calls
1 ms GetExtraPackages 2 calls
1 ms ReadLinesFromFile 1 calls
1 ms CreateTemporaryDirectory 2 calls
1 ms GetMonoPlatformJar 1 calls
1 ms GetJavaPlatformJar 1 calls
1 ms AssignProjectConfiguration 1 calls
1 ms CreateCSharpManifestResourceName 1 calls
1 ms ReadImportedLibrariesCache 1 calls
1 ms XmlPeek 1 calls
1 ms GetAndroidPackageName 1 calls
2 ms ReadLibraryProjectImportsCache 1 calls
2 ms GetAddOnPlatformLibraries 1 calls
2 ms CheckDuplicateJavaLibraries 1 calls
2 ms MakeDir 6 calls
2 ms CollectLibraryAssets 1 calls
3 ms AssignTargetPath 10 calls
3 ms Message 17 calls
4 ms ValidatePackageReferences 1 calls
5 ms FindAppConfigFile 1 calls
6 ms RemoveDirFixed 2 calls
8 ms ConvertDebuggingFiles 1 calls
8 ms XamarinBuildAndroidResourceRestore 1 calls
9 ms CreateResgenManifest 1 calls
9 ms CreateAndroidResourceStamp 1 calls
11 ms ConvertToAbsolutePath 1 calls
12 ms CreateProperty 70 calls
13 ms CopyConfigFiles 1 calls
13 ms CollectPdbFiles 1 calls
15 ms GeneratePackageManagerJava 1 calls
16 ms CopyResource 4 calls
17 ms Delete 3 calls
18 ms Hash 1 calls
19 ms CopyGeneratedJavaResourceClasses 2 calls
20 ms GetFilesThatExist 2 calls
23 ms CopyIfChanged 1 calls
30 ms GetPrimaryCpuAbi 1 calls
36 ms XamarinBuildAndroidAarRestore 1 calls
38 ms DetermineJavaLibrariesToCompile 1 calls
78 ms CopyMdbFiles 1 calls
81 ms WriteLinesToFile 6 calls
104 ms AndroidComputeResPaths 2 calls
121 ms GetAdditionalResourcesFromAssemblies 1 calls
128 ms CheckTargetFrameworks 1 calls
142 ms RemoveUnknownFiles 2 calls
146 ms XamarinBuildAndroidAarProguardConfigs 1 calls
195 ms GetImportedLibraries 1 calls
198 ms RemoveDuplicates 2 calls
212 ms FindUnderPath 5 calls
272 ms Touch 13 calls
402 ms AdjustJavacVersionArguments 1 calls
405 ms GenerateResourceDesigner 1 calls
448 ms ResolveSdks 1 calls
461 ms ResolveAssemblyReference 2 calls
595 ms ResolveAssemblies 1 calls
627 ms CreateItem 263 calls
3579 ms Csc 1 calls
3695 ms LinkAssemblies 1 calls
5509 ms ResolveLibraryProjectImports 1 calls
8166 ms GenerateJavaStubs 1 calls
9682 ms Copy 9 calls
15079 ms CreateMultiDexMainDexClassList 1 calls
15150 ms Javac 1 calls
19063 ms CompileToDalvik 1 calls
33129 ms Aapt 3 calls
48058 ms ConvertResourcesCases 3 calls
(* = timing was not recorded because of reentrancy)

Build succeeded.

Time Elapsed 00:02:46.92
生成配置如下所示:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MyApp-Debug|AndroidEmulator' ">
                <MonoAndroidResourcePrefix>Resources;Resources-MyApp</MonoAndroidResourcePrefix>
                <MonoAndroidAssetsPrefix>Assets;Assets-myapp</MonoAndroidAssetsPrefix>
                <AndroidResgenFile>Resources-MyApp\ResourceMyApp.designer.cs</AndroidResgenFile>
                    <AndroidExplicitCrunch>false</AndroidExplicitCrunch>
                <DebugSymbols>true</DebugSymbols>
                <DebugType>full</DebugType>
                <Optimize>false</Optimize>
                <OutputPath>bin\MyApp-Debug\AndroidEmulator</OutputPath>
                <DefineConstants>TRACE;MyApp;DEBUG</DefineConstants>
                <ErrorReport>prompt</ErrorReport>
                <WarningLevel>4</WarningLevel>
                <ConsolePause>false</ConsolePause>
                <EmbedAssembliesIntoApk>false</EmbedAssembliesIntoApk>
                <RunCodeAnalysis>true</RunCodeAnalysis>
                <AndroidEnableMultiDex>true</AndroidEnableMultiDex>
                <AndroidLinkMode>None</AndroidLinkMode>
                <AndroidUseSharedRuntime>true</AndroidUseSharedRuntime>
                <AndroidSupportedAbis>x86</AndroidSupportedAbis>
                <JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
            </PropertyGroup>

资源;资源MyApp
资产;资产myapp
Resources MyApp\ResourceMyApp.designer.cs
假的
真的
满的
假的
bin\MyApp调试\AndroidEmulator
痕迹;MyApp;调试
促使
4.
假的
假的
真的
真的
没有一个
真的
x86
2G
对于拥有以下数量资产的Xamarin Android项目来说,这(参见下面的构建日志)是正常的构建时间吗

是的。即使在原生安卓系统中,使用如此多的资产构建它也需要很多时间

你有什么建议来加快构建时间吗

是的,您可以参考以优化构建

每次更改xml文件中的某些内容时,都要进行干净的构建

尝试保存文件并等待几秒钟

目前,我们的Android项目的构建时间非常长

这对于包含
Xamarin.Forms
和所有相应支持库的
Xamarin.Android
应用程序来说是相当正常的。 正如您在
性能总结
中所看到的,我们看到大约33秒用于资源解析(
aapt
),15秒用于java编译(
javac
),大约19秒用于dex编译

如果您想进一步深入了解这一点,可以使用
诊断生成输出
,在命令行上手动调用这些命令,并查看每个命令需要多长时间。 大部分工作是由Android SDK构建工具完成的,这在某种程度上是一个瓶颈

以下Android Studio文档中还有一些很好的技巧,也可以应用于
Xamarin.Android
项目:

我们还有一个问题,每次更改xml文件中的某些内容时(例如更改布局文件中的颜色时),我们都需要执行干净的构建-->“ConvertResourcesCases”任务意外失败

以下是解决这个问题的一些建议:

  • 确保您对放置项目的文件夹拥有完全权限。
    • 如果您正在使用Mac,请确保您的文件在“文件”属性下处于“取消阻止”状态
    • 如果您使用的是Windows,请右键单击文件夹,选择
      属性
      ,选择
      安全性
      ,并授予“完全控制权限”
  • 确保根文件夹路径中没有任何非英语字符
你有什么建议来加快构建时间吗

在项目设置中启用
快速部署。

通过添加以下内容,可以在
.csproj
中启用新的
快速部署
功能:

<AndroidFastDeploymentType>Assemblies:Dexes</AndroidFastDeploymentType>

有关加快构建时间的更多详细信息,请参见:


.

有这么多资产是的,这需要时间。其次,如果清理和构建对您来说很忙,我建议您重新构建。您是否知道经常发生的问题,一些新代码在重新构建解决方案之前不会更新。它使用旧的代码和值