[Xamarin.Android.Build.Tasks] locate $(JdkJvmPath) only when needed #2420
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #2409
Context: https://github.com/xamarin/xamarin-android/wiki/Build-Performance-Results
When doing the latest performance comparison, I noticed the
<ResolveSdks/>MSBuild task is a bit slower:For
$(AndroidGenerateJniMarshalMethods)support, we needed to locatea new
$(JdkJvmPath)location.Since
<ResolveSdks/>finds$(JdkJvmPath)on first build, anddesign-time builds, it is worth making sure this task doesn't get any
slower. The initial design-time build happens on "solution create",
which is one of the more important metrics the VS team measures.
So I split out the logic finding
$(JdkJvmPath)and put it in a new<ResolveJdkJvmPath/>MSBuild task.Also setup a
Condition, so it only runs if:$(DesignTimeBuild)$(AndroidGenerateJniMarshalMethods)is enabled$(JdkJvmPath)is blankThis should save ~50ms on DTBs and first builds.