Skip to content

Commit

Permalink
[Xamarin.Android.Build.Tasks] property refactoring/cleanup (dotnet#3623)
Browse files Browse the repository at this point in the history
Context: dotnet/android@master...jonathanpeppers:fully-incremental

I am working on a revamp of the `<GenerateJavaStubs/>` MSBuild task to
make it "fully incremental".

The following parts of the build would happen on a per-assembly basis:

* Java sources generated
* Java class files compiled via `javac`
* `classes.zip` or `*.jar` files

This will be hidden behind a feature flag such as
`/p:_AndroidFullyIncremental=True` for its first implementation.

The problem I am facing is that our build throws random Java sources
into `$(IntermediateOutputPath)android\src` throughout the build. This
includes files like `R.java`, `MonoRuntimeProvider.java`, etc.

To make it where the location of these files is modifiable, we can
create a few new private properties:

* `$(_AndroidIntermediateJavaSourceDirectory)` which is `$(IntermediateOutputPath)android\src\`
* `$(_AndroidIntermediateJavaClassDirectory)` which is `$(IntermediateOutputPath)android\bin\classes\`
* `$(_AndroidIntermediateClassesZip)` which is `$(IntermediateOutputPath)android\bin\classes.zip`

This way I can modify the location when the `_AndroidFullyIncremental`
feature flag is set.

To refactor things a bit further, I also removed usage of
`$(MonoAndroidIntermediate)` and just used `$(IntermediateOutputPath)`
instead. `$(IntermediateOutputPath)` should be generally more
well-known for MSBuild, and I kept the original property around
because I found usage in other repos.
  • Loading branch information
jonathanpeppers committed Sep 16, 2019
1 parent 7ef0456 commit 185c529
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Copyright (C) 2016 Xamarin. All rights reserved.
<Target Name="_GeneratePackageManagerJavaForDesigner"
DependsOnTargets="_AddStaticResources;_ResolveAssemblies;_CopyAssembliesForDesigner;_PrepareAssembliesForDesigner;$(BeforeGenerateAndroidManifest)"
Inputs="$(_ResolvedUserAssembliesHashFile);@(ResolvedAssemblies);@(ResolvedUserAssemblies);$(_AndroidManifestAbs);"
Outputs="$(IntermediateOutputPath)android\src\mono\MonoPackageManager.java;$(_AndroidTypeMappingJavaToManaged);$(_AndroidTypeMappingManagedToJava)">
Outputs="$(_AndroidIntermediateJavaSourceDirectory)mono\MonoPackageManager.java;$(_AndroidTypeMappingJavaToManaged);$(_AndroidTypeMappingManagedToJava)">
<GenerateJavaStubs
ResolvedAssemblies="@(_ResolvedAssemblies)"
ResolvedUserAssemblies="@(_ResolvedUserMonoAndroidAssembliesForDesigner)"
Expand Down Expand Up @@ -112,8 +112,8 @@ Copyright (C) 2016 Xamarin. All rights reserved.
ResolvedAssemblies="@(_ResolvedAssemblies)"
ResolvedUserAssemblies="@(_ResolvedUserAssemblies)"
MainAssembly="$(MonoAndroidLinkerInputDir)$(TargetFileName)"
OutputDirectory="$(IntermediateOutputPath)android\src\mono"
EnvironmentOutputDirectory="$(IntermediateOutputPath)android\src\mono\android\app"
OutputDirectory="$(_AndroidIntermediateJavaSourceDirectory)mono"
EnvironmentOutputDirectory="$(_AndroidIntermediateJavaSourceDirectory)mono\android\app"
UseSharedRuntime="$(AndroidUseSharedRuntime)"
TargetFrameworkVersion="$(TargetFrameworkVersion)"
Manifest="$(IntermediateOutputPath)android\AndroidManifest.xml"
Expand All @@ -139,9 +139,9 @@ Copyright (C) 2016 Xamarin. All rights reserved.
Outputs="$(_AndroidStampDirectory)SetupDependenciesForDesigner.stamp">
<Javac
JavaPlatformJarPath="$(JavaPlatformJarPath)"
ClassesOutputDirectory="$(IntermediateOutputPath)android\bin\classes"
ClassesOutputDirectory="$(_AndroidIntermediateJavaClassDirectory)"
TargetFrameworkDirectory="$(TargetFrameworkDirectory)"
StubSourceDirectory="$(IntermediateOutputPath)android\src"
StubSourceDirectory="$(_AndroidIntermediateJavaSourceDirectory)"
JavaSourceFiles=""
ToolPath="$(JavacToolPath)"
ToolExe="$(JavacToolExe)"
Expand Down
Loading

0 comments on commit 185c529

Please sign in to comment.