Skip to content

Commit eaebb88

Browse files
[Xamarin.Android.Build.Tasks] remove the linksrc directory
I've removed various MSBuild targets that copy assemblies into the `obj\Debug\linksrc` directory, and instead just use `@(ResolvedUserAssemblies)` or `@(ResolvedAssemblies)` where appropriate. Things seem to *work*, I can build and deploy `samples\HelloWorld` and the Xamarin.Forms app in this repo. Let's see what breaks? The size of `tests\Xamarin.Forms-Performance-Integration\Droid\obj\` is improved dramatically: Before: 184.27 MB After: 111.74 MB ~73MB savings. These MSBuild tasks were completely removed: 3 ms _CopyMdbFiles 1 calls 43 ms _CopyPdbFiles 1 calls 127 ms _CopyIntermediateAssemblies 1 calls I will need to retest this on a slower machine where I'm seeing Windows Defender have an impact on build times.
1 parent cdc31b7 commit eaebb88

File tree

1 file changed

+6
-61
lines changed

1 file changed

+6
-61
lines changed

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets

Lines changed: 6 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1227,7 +1227,6 @@ because xbuild doesn't support framework reference assemblies.
12271227
<PropertyGroup>
12281228
<MonoAndroidResDirIntermediate>$(IntermediateOutputPath)res\</MonoAndroidResDirIntermediate>
12291229
<MonoAndroidIntermediateAssetsDir>$(IntermediateOutputPath)android\assets\</MonoAndroidIntermediateAssetsDir>
1230-
<MonoAndroidLinkerInputDir>$(IntermediateOutputPath)linksrc\</MonoAndroidLinkerInputDir>
12311230
<MonoAndroidIntermediateAssemblyDir>$(IntermediateOutputPath)android\assets\</MonoAndroidIntermediateAssemblyDir>
12321231
<MonoAndroidIntermediateAssemblyTempDir>$(IntermediateOutputPath)linkdst\</MonoAndroidIntermediateAssemblyTempDir>
12331232
<MonoAndroidResourcePrefix Condition="'$(MonoAndroidResourcePrefix)' == ''">Resources</MonoAndroidResourcePrefix>
@@ -1981,25 +1980,6 @@ because xbuild doesn't support framework reference assemblies.
19811980
</ItemGroup>
19821981
</Target>
19831982

1984-
<Target Name="_CopyIntermediateAssemblies"
1985-
Inputs="@(ResolvedAssemblies);@(_AndroidResolvedSatellitePaths)"
1986-
Outputs="$(_AndroidStampDirectory)_CopyIntermediateAssemblies.stamp"
1987-
DependsOnTargets="_ResolveAssemblies;_ResolveSatellitePaths;_CreatePackageWorkspace;_CopyConfigFiles">
1988-
<ItemGroup>
1989-
<_CIAResolvedAssembliesDestinationFiles Include="@(ResolvedAssemblies->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)')" />
1990-
<_CIAResolvedSatellitePathsDestinationFiles Include="@(_AndroidResolvedSatellitePaths->'$(MonoAndroidLinkerInputDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
1991-
</ItemGroup>
1992-
<!-- Make a copy of every assembly we need in assemblies -->
1993-
<CopyIfChanged SourceFiles="@(ResolvedAssemblies)" DestinationFiles="@(_CIAResolvedAssembliesDestinationFiles)" />
1994-
<CopyIfChanged SourceFiles="@(_AndroidResolvedSatellitePaths)" DestinationFiles="@(_CIAResolvedSatellitePathsDestinationFiles)" />
1995-
<!-- Delete mdb files leftover from a previous build -->
1996-
<Delete Files="@(ResolvedAssemblies->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension).mdb')" />
1997-
<Touch Files="$(_AndroidStampDirectory)_CopyIntermediateAssemblies.stamp" AlwaysCreate="True" />
1998-
<ItemGroup>
1999-
<FileWrites Include="@(_CIAResolvedAssembliesDestinationFiles);@(_CIAResolvedSatellitePathsDestinationFiles)" />
2000-
</ItemGroup>
2001-
</Target>
2002-
20031983
<Target Name="_CollectConfigFiles">
20041984
<GetFilesThatExist
20051985
Files="@(ResolvedAssemblies->'%(identity).config')">
@@ -2050,41 +2030,13 @@ because xbuild doesn't support framework reference assemblies.
20502030
</ItemGroup>
20512031
</Target>
20522032

2053-
<Target Name="_CopyPdbFiles"
2054-
Inputs="@(_ResolvedPortablePdbFiles)"
2055-
Outputs="$(_AndroidStampDirectory)_CopyPdbFiles.stamp"
2056-
DependsOnTargets="_ConvertPdbFiles">
2057-
<ItemGroup>
2058-
<_CopyPdbFilesLinkerFiles Include="@(_ResolvedPortablePdbFiles->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)')" />
2059-
</ItemGroup>
2060-
<CopyIfChanged SourceFiles="@(_ResolvedPortablePdbFiles)" DestinationFiles="@(_CopyPdbFilesLinkerFiles)" />
2061-
<Touch Files="$(_AndroidStampDirectory)_CopyPdbFiles.stamp" AlwaysCreate="True" />
2062-
<ItemGroup>
2063-
<FileWrites Include="@(_CopyPdbFilesLinkerFiles)" />
2064-
</ItemGroup>
2065-
</Target>
2066-
2067-
<Target Name="_CopyMdbFiles"
2068-
Inputs="@(_ResolvedMdbFiles)"
2069-
Outputs="$(_AndroidStampDirectory)_CopyMdbFiles.stamp"
2070-
DependsOnTargets="_CollectMdbFiles">
2071-
<ItemGroup>
2072-
<_CopyMdbFilesLinkerFiles Include="@(_ResolvedMdbFiles->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)')" />
2073-
</ItemGroup>
2074-
<CopyIfChanged SourceFiles="@(_ResolvedMdbFiles)" DestinationFiles="@(_CopyMdbFilesLinkerFiles)" />
2075-
<Touch Files="$(_AndroidStampDirectory)_CopyMdbFiles.stamp" AlwaysCreate="True" />
2076-
<ItemGroup>
2077-
<FileWrites Include="@(_CopyMdbFilesLinkerFiles)" />
2078-
</ItemGroup>
2079-
</Target>
2080-
20812033
<Target Name="_LinkAssemblies"
20822034
DependsOnTargets="_ResolveAssemblies;_CreatePackageWorkspace;$(_BeforeLinkAssemblies);_GenerateJniMarshalMethods;_LinkAssembliesNoShrink;_LinkAssembliesShrink" />
20832035

20842036
<Target Name="_GenerateJniMarshalMethods"
20852037
Condition="'$(AndroidGenerateJniMarshalMethods)' == 'True' And '$(AndroidLinkMode)' != 'None' And '$(OS)' != 'Windows_NT'"
20862038
DependsOnTargets="_GetReferenceAssemblyPaths;_SetLatestTargetFrameworkVersion"
2087-
Inputs="@(ResolvedUserAssemblies->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)')"
2039+
Inputs="@(ResolvedUserAssemblies)"
20882040
Outputs="$(_AndroidJniMarshalMethodsFlag)">
20892041
<ItemGroup>
20902042
<_JniFrameworkAssembly Include="Mono.Android.dll" />
@@ -2097,7 +2049,7 @@ because xbuild doesn't support framework reference assemblies.
20972049
<_AssembliesToProcess Include="@(ResolvedAssemblies)" Condition=" '%(Filename)' != '' And '@(_JniFrameworkAssembly)' != '' " />
20982050
</ItemGroup>
20992051
<Exec
2100-
Command="DYLD_LIBRARY_PATH=&quot;$(MonoAndroidLibDirectory)&quot; MONO_CONFIG=&quot;$(MonoAndroidBinDirectory)mono.config&quot; MONO_PATH=&quot;$(MonoAndroidBinDirectory)\bcl&quot;:&quot;$(MonoAndroidBinDirectory)\bcl\Facades&quot;:&quot;$(_XATargetFrameworkDirectories):$(MonoAndroidLinkerInputDir)&quot; &quot;$(MonoAndroidBinDirectory)mono&quot; --debug &quot;$(MonoAndroidToolsDirectory)\jnimarshalmethod-gen.exe&quot; --jvm=&quot;$(JdkJvmPath)&quot; $(AndroidGenerateJniMarshalMethodsAdditionalArguments) @(_AssembliesToProcess->'&quot;$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)&quot;', ' ')"
2052+
Command="DYLD_LIBRARY_PATH=&quot;$(MonoAndroidLibDirectory)&quot; MONO_CONFIG=&quot;$(MonoAndroidBinDirectory)mono.config&quot; MONO_PATH=&quot;$(MonoAndroidBinDirectory)\bcl&quot;:&quot;$(MonoAndroidBinDirectory)\bcl\Facades&quot;:&quot;$(_XATargetFrameworkDirectories)&quot; &quot;$(MonoAndroidBinDirectory)mono&quot; --debug &quot;$(MonoAndroidToolsDirectory)\jnimarshalmethod-gen.exe&quot; --jvm=&quot;$(JdkJvmPath)&quot; $(AndroidGenerateJniMarshalMethodsAdditionalArguments) @(_AssembliesToProcess->'&quot;%(FullPath)&quot;', ' ')"
21012053
/>
21022054
<Touch Files="$(_AndroidJniMarshalMethodsFlag)" AlwaysCreate="True" />
21032055
</Target>
@@ -2129,7 +2081,7 @@ because xbuild doesn't support framework reference assemblies.
21292081

21302082
<Target Name="_LinkAssembliesShrink"
21312083
Condition="'$(AndroidLinkMode)' != 'None'"
2132-
Inputs="@(ResolvedUserAssemblies->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)');$(_AndroidBuildPropertiesCache)"
2084+
Inputs="@(ResolvedUserAssemblies);$(_AndroidBuildPropertiesCache)"
21332085
Outputs="$(_AndroidLinkFlag)">
21342086

21352087
<CreateProperty
@@ -2142,7 +2094,7 @@ because xbuild doesn't support framework reference assemblies.
21422094

21432095
<LinkAssemblies
21442096
UseSharedRuntime="$(AndroidUseSharedRuntime)"
2145-
MainAssembly="$(MonoAndroidLinkerInputDir)$(TargetFileName)"
2097+
MainAssembly="$(TargetPath)"
21462098
OutputDirectory="$(MonoAndroidIntermediateAssetsDir)"
21472099
I18nAssemblies="$(MandroidI18n)"
21482100
LinkMode="$(AndroidLinkMode)"
@@ -2152,7 +2104,7 @@ because xbuild doesn't support framework reference assemblies.
21522104
PreserveJniMarshalMethods="$(AndroidGenerateJniMarshalMethods)"
21532105
EnableProguard="$(AndroidEnableProguard)"
21542106
DumpDependencies="$(LinkerDumpDependencies)"
2155-
ResolvedAssemblies="@(ResolvedAssemblies->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)')"
2107+
ResolvedAssemblies="@(ResolvedAssemblies)"
21562108
HttpClientHandlerType="$(AndroidHttpClientHandlerType)"
21572109
TlsProvider="$(AndroidTlsProvider)" />
21582110

@@ -2170,9 +2122,6 @@ because xbuild doesn't support framework reference assemblies.
21702122
;_CheckForObsoleteAssemblies
21712123
;_ResolveSatellitePaths
21722124
;_CreatePackageWorkspace
2173-
;_CopyIntermediateAssemblies
2174-
;_CopyPdbFiles
2175-
;_CopyMdbFiles
21762125
;_LinkAssemblies
21772126
</_PrepareAssembliesDependsOnTargets>
21782127
</PropertyGroup>
@@ -2423,7 +2372,7 @@ because xbuild doesn't support framework reference assemblies.
24232372
<GeneratePackageManagerJava
24242373
ResolvedAssemblies="@(_ResolvedAssemblies)"
24252374
ResolvedUserAssemblies="@(_ResolvedUserAssemblies)"
2426-
MainAssembly="$(MonoAndroidLinkerInputDir)$(TargetFileName)"
2375+
MainAssembly="$(TargetPath)"
24272376
OutputDirectory="$(IntermediateOutputPath)android\src\mono"
24282377
EnvironmentOutputDirectory="$(IntermediateOutputPath)android"
24292378
UseSharedRuntime="$(AndroidUseSharedRuntime)"
@@ -2942,9 +2891,6 @@ because xbuild doesn't support framework reference assemblies.
29422891
_SetLatestTargetFrameworkVersion;
29432892
_GetLibraryImports;
29442893
_RemoveRegisterAttribute;
2945-
_CopyIntermediateAssemblies;
2946-
_CopyPdbFiles;
2947-
_CopyMdbFiles;
29482894
_LinkAssemblies;
29492895
_GenerateJavaStubs;
29502896
_ConvertCustomView;
@@ -3436,7 +3382,6 @@ because xbuild doesn't support framework reference assemblies.
34363382
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)android" Condition="Exists ('$(MonoAndroidIntermediate)android')" />
34373383
<!-- FIXME: remove this extraneous rmdir after a few release cycles since we release the one we killed it. -->
34383384
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)assemblies" Condition="Exists ('$(MonoAndroidIntermediate)assemblies')" />
3439-
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)linksrc" Condition="Exists ('$(MonoAndroidIntermediate)linksrc')" />
34403385
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)linkdst" Condition="Exists ('$(MonoAndroidIntermediate)linkdst')" />
34413386
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)res" Condition="Exists ('$(MonoAndroidIntermediate)res')" />
34423387
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)aidl" Condition="Exists ('$(MonoAndroidIntermediate)aidl')" />

0 commit comments

Comments
 (0)