Skip to content

Commit 3578d75

Browse files
[Mono.Android] build and reference non-PCL Java.Interop (#2105)
Fixes: http://work.devdiv.io/667174 Context: dotnet/java-interop@893562c Context: dotnet/java-interop@659711c Context: dotnet/java-interop@b873e81...a09932d Bumped to java.interop/d15-9/a09932d Build `lib\xamarin.android\xbuild-frameworks\MonoAndroid\v1.0\Java.Interop.dll` as a `MonoAndroid`-profile assembly instead of as a PCL assembly. This decreases the assemblies referenced in a "Hello World" Xamarin.Android project dramatically; this: Adding assembly reference for Java.Interop, Version=0.1.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065, recursively... Adding assembly reference for System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.ComponentModel.Composition, Version=2.0.5.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, recursively... Adding assembly reference for System.Diagnostics.Debug, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Threading, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Collections, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Collections.Concurrent, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Reflection, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Linq.Expressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Reflection.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Dynamic.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.ObjectModel, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Linq, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Runtime.InteropServices, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Runtime.Extensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for System.Reflection.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, recursively... Adding assembly reference for Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065, recursively... now becomes: Adding assembly reference for Java.Interop, Version=0.1.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065, recursively... Adding assembly reference for Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065, recursively... Because fewer assemblies need to be resolved, the `Rebuild` target times improve by 30%-50% for the "Hello World" app: - `Debug` + PCL: 8.424s - `Debug` + *not* PCL: 4.258s (~50% faster!) - `Release` + PCL: 13.651s - `Release` + *not* PCL: 9.487s (~30% faster!) The `lib\xamarin.android\xbuild\Xamarin\Android\Java.Interop.dll` copy used by `Xamarin.Android.Build.Tasks.dll` remains unchanged, as it is referenced by `Xamarin.Android.Build.Tasks.csproj`.
1 parent f58791f commit 3578d75

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

external/Java.Interop

src/Mono.Android/Mono.Android.targets

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,23 @@
88
</ItemGroup>
99
<Target Name="_BuildJavaInterop"
1010
BeforeTargets="BeforeResolveReferences"
11-
Inputs="$(JavaInteropFullPath)\src\Java.Interop\Java.Interop.csproj"
11+
Inputs="$(MSBuildThisFile);$(JavaInteropFullPath)\src\Java.Interop\Java.Interop.csproj"
1212
Outputs="$(OutputPath)\..\v1.0\Java.Interop.dll">
13+
<PropertyGroup>
14+
<_GlobalProperties>
15+
JavaInteropProfile=Net45;
16+
XAInstallPrefix=$(XAInstallPrefix);
17+
TargetFrameworkIdentifier=MonoAndroid;
18+
TargetFrameworkVersion=v1.0;
19+
TargetFrameworkRootPath=$(XAInstallPrefix)xbuild-frameworks;
20+
</_GlobalProperties>
21+
</PropertyGroup>
1322
<MSBuild
1423
Projects="$(JavaInteropFullPath)\src\Java.Interop\Java.Interop.csproj"
24+
Properties="$(_GlobalProperties)"
1525
/>
1626
<ItemGroup>
17-
<Assembly Include="$(JavaInteropFullPath)\bin\$(Configuration)\*.dll*" />
27+
<Assembly Include="$(JavaInteropFullPath)\bin\$(Configuration)Net45\*.dll*" />
1828
</ItemGroup>
1929
<Copy
2030
SourceFiles="@(Assembly)"

0 commit comments

Comments
 (0)