Skip to content

Commit fbb3342

Browse files
[Xamarin.Android.Build.Tasks] fix _GeneratePackageManagerJavaForDesigner (#3889)
I was doing some review of the MSBuild targets that run when you save an axml file. The first thing I found was: Building target "_GeneratePackageManagerJavaForDesigner" completely. Output file "obj\Debug\100\android\src\mono\MonoPackageManager.java" does not exist. This MSBuild target was running every time that `SetupDependenciesForDesigner` runs. We no longer generate `MonoPackageManager.java` at all, so instead: * Look for `MonoPackageManager_Resources.java`, which actually exists. * Use `$(_AcwMapFile)` instead of the typemaps, since the designer actually uses that file. In some cases the typemaps aren't generated either. These changes improve `SetupDependenciesForDesigner` by about 500ms on a small app.
1 parent ebf1e51 commit fbb3342

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Designer.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ Copyright (C) 2016 Xamarin. All rights reserved.
7777
<Target Name="_GeneratePackageManagerJavaForDesigner"
7878
DependsOnTargets="_AddStaticResources;_ResolveAssemblies;_CopyAssembliesForDesigner;_PrepareAssembliesForDesigner;$(BeforeGenerateAndroidManifest)"
7979
Inputs="$(_ResolvedUserAssembliesHashFile);@(ResolvedAssemblies);@(ResolvedUserAssemblies);$(_AndroidManifestAbs);"
80-
Outputs="$(_AndroidIntermediateJavaSourceDirectory)mono\MonoPackageManager.java;$(_AndroidTypeMappingJavaToManaged);$(_AndroidTypeMappingManagedToJava)">
80+
Outputs="$(_AndroidIntermediateJavaSourceDirectory)mono\MonoPackageManager_Resources.java;$(_AcwMapFile)">
8181
<GenerateJavaStubs
8282
ResolvedAssemblies="@(_ResolvedAssemblies)"
8383
ResolvedUserAssemblies="@(_ResolvedUserMonoAndroidAssembliesForDesigner)"

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/DesignerTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,15 @@ public void IncrementalSetupDependenciesForDesigner ()
162162
});
163163
using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) {
164164
Assert.IsTrue (b.RunTarget (proj, target, parameters: DesignerParameters), $"first `{target}` should have succeeded.");
165-
Assert.IsTrue (b.RunTarget (proj, target, parameters: DesignerParameters), $"second `{target}` should have succeeded.");
165+
Assert.IsTrue (b.RunTarget (proj, target, parameters: DesignerParameters, doNotCleanupOnUpdate: true), $"second `{target}` should have succeeded.");
166166
Assert.IsTrue (b.Output.IsTargetSkipped (target), $"`{target}` should be skipped!");
167+
Assert.IsTrue (b.Output.IsTargetSkipped ("_GeneratePackageManagerJavaForDesigner"), "`_GeneratePackageManagerJavaForDesigner` should be skipped!");
167168

168169
// Change a java file, run SetupDependenciesForDesigner
169170
proj.Touch ("Foo.java");
170-
Assert.IsTrue (b.RunTarget (proj, target, parameters: DesignerParameters), $"third `{target}` should have succeeded.");
171+
Assert.IsTrue (b.RunTarget (proj, target, parameters: DesignerParameters, doNotCleanupOnUpdate: true), $"third `{target}` should have succeeded.");
171172
Assert.IsFalse (b.Output.IsTargetSkipped (target), $"`{target}` should *not* be skipped!");
173+
Assert.IsTrue (b.Output.IsTargetSkipped ("_GeneratePackageManagerJavaForDesigner"), "`_GeneratePackageManagerJavaForDesigner` should be skipped!");
172174
}
173175
}
174176

0 commit comments

Comments
 (0)