Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

Commit a4c04bb

Browse files
Multi-target for .NET 6 and MonoAndroid90
So far ported: * Xamarin.Google.Guava * Xamarin.Google.Guava.FailureAccess * Xamarin.Google.Guava.ListenableFuture
1 parent fe2166d commit a4c04bb

File tree

11 files changed

+82
-71
lines changed

11 files changed

+82
-71
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ tmpnupkg/
1111
*.user
1212
.DS_Store
1313
*.user
14+
*.binlog
1415
artifacts/

Android/Guava/build.cake

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -101,38 +101,36 @@ Task ("externals")
101101
}
102102

103103
// Update .csproj nuget versions
104-
XmlPoke("./source/Guava/Guava.csproj", "/Project/PropertyGroup/PackageVersion", GUAVA_NUGET_VERSION);
105-
XmlPoke("./source/Guava.FailureAccess/Guava.FailureAccess.csproj", "/Project/PropertyGroup/PackageVersion", GUAVA_FAILUREACCESS_NUGET_VERSION);
106-
XmlPoke("./source/Guava.ListenableFuture/Guava.ListenableFuture.csproj", "/Project/PropertyGroup/PackageVersion", GUAVA_LISTENABLEFUTURE_NUGET_VERSION);
104+
XmlPoke("./source/Guava/Guava.csproj", "/Project/PropertyGroup/PackageVersion", GUAVA_NUGET_VERSION + "$(PackageVersionSuffix)");
105+
XmlPoke("./source/Guava.FailureAccess/Guava.FailureAccess.csproj", "/Project/PropertyGroup/PackageVersion", GUAVA_FAILUREACCESS_NUGET_VERSION + "$(PackageVersionSuffix)");
106+
XmlPoke("./source/Guava.ListenableFuture/Guava.ListenableFuture.csproj", "/Project/PropertyGroup/PackageVersion", GUAVA_LISTENABLEFUTURE_NUGET_VERSION + "$(PackageVersionSuffix)");
107107
});
108108

109109

110110
Task("libs")
111111
.IsDependentOn("externals")
112112
.Does(() =>
113113
{
114-
MSBuild("./Guava.sln", c => {
115-
c.Configuration = "Release";
116-
c.Restore = true;
117-
c.MaxCpuCount = 0;
118-
c.Properties.Add("DesignTimeBuild", new [] { "false" });
119-
});
114+
DotNetCoreRestore ("./Guava.sln");
115+
116+
DotNetCoreMSBuild ("./Guava.sln",
117+
new DotNetCoreMSBuildSettings()
118+
.SetConfiguration("Release")
119+
);
120120
});
121121

122122
Task("nuget")
123123
.IsDependentOn("libs")
124124
.Does(() =>
125125
{
126-
MSBuild ("./Guava.sln", c => {
127-
c.Configuration = "Release";
128-
c.MaxCpuCount = 0;
129-
c.Targets.Clear();
130-
c.Targets.Add("Pack");
131-
c.Properties.Add("PackageOutputPath", new [] { MakeAbsolute(new FilePath("./output")).FullPath });
132-
c.Properties.Add("PackageRequireLicenseAcceptance", new [] { "true" });
133-
c.Properties.Add("DesignTimeBuild", new [] { "false" });
134-
c.Properties.Add("NoBuild", new [] { "true" });
135-
});
126+
DotNetCoreMSBuild ("./Guava.sln",
127+
new DotNetCoreMSBuildSettings()
128+
.WithTarget("Pack")
129+
.SetConfiguration("Release")
130+
.WithProperty ("PackageOutputPath", MakeAbsolute(new FilePath("./output")).FullPath)
131+
.WithProperty ("PackageRequireLicenseAcceptance", "true")
132+
.WithProperty ("NoBuild", "true")
133+
);
136134
});
137135

138136
Task("samples")
@@ -142,7 +140,7 @@ Task ("clean")
142140
.Does (() =>
143141
{
144142
if (DirectoryExists ("./externals/"))
145-
DeleteDirectory ("./externals", true);
143+
DeleteDirectory ("./externals", new DeleteDirectorySettings { Recursive = true });
146144
});
147145

148146
Task ("ci")
Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Sdk="MSBuild.Sdk.Extras/2.0.54">
1+
<Project Sdk="Xamarin.Legacy.Sdk">
32
<PropertyGroup>
4-
<TargetFramework>monoandroid90</TargetFramework>
3+
<TargetFrameworks>net6.0-android;monoandroid90</TargetFrameworks>
54
<IsBindingProject>true</IsBindingProject>
65
<AssemblyName>Xamarin.Google.Guava.FailureAccess</AssemblyName>
7-
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
8-
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
9-
<AndroidUseLatestPlatformSdk>False</AndroidUseLatestPlatformSdk>
10-
<AndroidUseIntermediateDesignerFile>True</AndroidUseIntermediateDesignerFile>
11-
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
126
<RootNamespace>Guava.FailureAccess</RootNamespace>
13-
<AndroidClassParser>class-parse</AndroidClassParser>
14-
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
157
<Java7DocPaths>..\..\externals\guava-failureaccess-javadocs\</Java7DocPaths>
168
</PropertyGroup>
179

@@ -32,20 +24,17 @@ Guava is a set of core libraries that includes new collection types (such as mul
3224
<PackageProjectUrl>https://go.microsoft.com/fwlink/?linkid=865028</PackageProjectUrl>
3325
<PackageLicenseUrl>https://go.microsoft.com/fwlink/?linkid=865030</PackageLicenseUrl>
3426
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
35-
<PackageVersion>1.0.1.2</PackageVersion>
27+
<PackageVersion>1.0.1.2$(PackageVersionSuffix)</PackageVersion>
3628
</PropertyGroup>
3729

3830
<ItemGroup>
39-
<None Include="Guava.FailureAccess.targets" Pack="True" PackagePath="build\$(TargetFramework)\$(PackageId).targets" />
40-
<None Include="Guava.FailureAccess.targets" Pack="True" PackagePath="buildTransitive\$(TargetFramework)\$(PackageId).targets" />
41-
<None Include="..\..\externals\guava-failureaccess.jar" Pack="True" PackagePath="build\$(TargetFramework)\guava-failureaccess.jar" />
42-
<None Include="..\..\externals\guava-failureaccess.jar" Pack="True" PackagePath="buildTransitive\$(TargetFramework)\guava-failureaccess.jar" />
31+
<None Include="Guava.FailureAccess.targets" Pack="True" PackagePath="@(_TfmNuGetBuildFolders->'%(Identity)$(PackageId).targets')" />
32+
<None Include="..\..\externals\guava-failureaccess.jar" Pack="True" PackagePath="@(_TfmNuGetBuildFolders->'%(Identity)guava-failureaccess.jar')" />
4333
<None Include="..\..\External-Dependency-Info.txt" Pack="True" PackagePath="THIRD-PARTY-NOTICES.txt" />
4434
</ItemGroup>
4535

4636
<ItemGroup>
4737
<InputJar Include="..\..\externals\guava-failureaccess.jar" />
48-
<TransformFile Include="Transforms.xml" />
4938
</ItemGroup>
5039

5140
</Project>
Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Sdk="MSBuild.Sdk.Extras/2.0.54">
1+
<Project Sdk="Xamarin.Legacy.Sdk">
32
<PropertyGroup>
4-
<TargetFramework>monoandroid90</TargetFramework>
3+
<TargetFrameworks>net6.0-android;monoandroid90</TargetFrameworks>
54
<IsBindingProject>true</IsBindingProject>
65
<AssemblyName>Xamarin.Google.Guava.ListenableFuture</AssemblyName>
7-
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
8-
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
9-
<AndroidUseLatestPlatformSdk>False</AndroidUseLatestPlatformSdk>
10-
<AndroidUseIntermediateDesignerFile>True</AndroidUseIntermediateDesignerFile>
11-
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
126
<RootNamespace>Guava.ListenableFuture</RootNamespace>
13-
<AndroidClassParser>class-parse</AndroidClassParser>
14-
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
157
<Java7DocPaths>..\..\externals\guava-listenablefuture-javadocs\</Java7DocPaths>
168
</PropertyGroup>
179

@@ -32,20 +24,17 @@ Guava is a set of core libraries that includes new collection types (such as mul
3224
<PackageProjectUrl>https://go.microsoft.com/fwlink/?linkid=865028</PackageProjectUrl>
3325
<PackageLicenseUrl>https://go.microsoft.com/fwlink/?linkid=865030</PackageLicenseUrl>
3426
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
35-
<PackageVersion>1.0.0.2</PackageVersion>
27+
<PackageVersion>1.0.0.2$(PackageVersionSuffix)</PackageVersion>
3628
</PropertyGroup>
3729

3830
<ItemGroup>
39-
<None Include="Guava.ListenableFuture.targets" Pack="True" PackagePath="build\$(TargetFramework)\$(PackageId).targets" />
40-
<None Include="Guava.ListenableFuture.targets" Pack="True" PackagePath="buildTransitive\$(TargetFramework)\$(PackageId).targets" />
41-
<None Include="..\..\externals\guava-listenablefuture.jar" Pack="True" PackagePath="build\$(TargetFramework)\guava-listenablefuture.jar" />
42-
<None Include="..\..\externals\guava-listenablefuture.jar" Pack="True" PackagePath="buildTransitive\$(TargetFramework)\guava-listenablefuture.jar" />
31+
<None Include="Guava.ListenableFuture.targets" Pack="True" PackagePath="@(_TfmNuGetBuildFolders->'%(Identity)$(PackageId).targets')" />
32+
<None Include="..\..\externals\guava-listenablefuture.jar" Pack="True" PackagePath="@(_TfmNuGetBuildFolders->'%(Identity)guava-listenablefuture.jar')" />
4333
<None Include="..\..\External-Dependency-Info.txt" Pack="True" PackagePath="THIRD-PARTY-NOTICES.txt" />
4434
</ItemGroup>
4535

4636
<ItemGroup>
4737
<InputJar Include="..\..\externals\guava-listenablefuture.jar" />
48-
<TransformFile Include="Transforms.xml" />
4938
</ItemGroup>
5039

5140
</Project>
Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Sdk="MSBuild.Sdk.Extras/2.0.54">
1+
<Project Sdk="Xamarin.Legacy.Sdk">
32
<PropertyGroup>
4-
<TargetFramework>monoandroid90</TargetFramework>
3+
<TargetFrameworks>net6.0-android;monoandroid90</TargetFrameworks>
54
<IsBindingProject>true</IsBindingProject>
65
<AssemblyName>Xamarin.Google.Guava</AssemblyName>
7-
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
8-
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
9-
<AndroidUseLatestPlatformSdk>False</AndroidUseLatestPlatformSdk>
10-
<AndroidUseIntermediateDesignerFile>True</AndroidUseIntermediateDesignerFile>
11-
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
126
<RootNamespace>Guava</RootNamespace>
13-
<AndroidClassParser>class-parse</AndroidClassParser>
14-
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
157
<Java7DocPaths>..\..\externals\guava-javadocs\</Java7DocPaths>
168
</PropertyGroup>
179

@@ -32,14 +24,12 @@ Guava is a set of core libraries that includes new collection types (such as mul
3224
<PackageProjectUrl>https://go.microsoft.com/fwlink/?linkid=865028</PackageProjectUrl>
3325
<PackageLicenseUrl>https://go.microsoft.com/fwlink/?linkid=865030</PackageLicenseUrl>
3426
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
35-
<PackageVersion>28.2.0.0</PackageVersion>
27+
<PackageVersion>28.2.0.0$(PackageVersionSuffix)</PackageVersion>
3628
</PropertyGroup>
3729

3830
<ItemGroup>
39-
<None Include="Guava.targets" Pack="True" PackagePath="build\$(TargetFramework)\$(PackageId).targets" />
40-
<None Include="Guava.targets" Pack="True" PackagePath="buildTransitive\$(TargetFramework)\$(PackageId).targets" />
41-
<None Include="..\..\externals\guava.jar" Pack="True" PackagePath="build\$(TargetFramework)\guava.jar" />
42-
<None Include="..\..\externals\guava.jar" Pack="True" PackagePath="buildTransitive\$(TargetFramework)\guava.jar" />
31+
<None Include="Guava.targets" Pack="True" PackagePath="@(_TfmNuGetBuildFolders->'%(Identity)$(PackageId).targets')" />
32+
<None Include="..\..\externals\guava.jar" Pack="True" PackagePath="@(_TfmNuGetBuildFolders->'%(Identity)guava.jar')" />
4333
<None Include="..\..\External-Dependency-Info.txt" Pack="True" PackagePath="THIRD-PARTY-NOTICES.txt" />
4434
</ItemGroup>
4535

@@ -50,7 +40,6 @@ Guava is a set of core libraries that includes new collection types (such as mul
5040

5141
<ItemGroup>
5242
<InputJar Include="..\..\externals\guava.jar" />
53-
<TransformFile Include="Transforms.xml" />
5443
</ItemGroup>
5544

5645
</Project>

Directory.Build.props

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<Project>
2+
<PropertyGroup>
3+
<PackageVersionSuffix>-net6preview02</PackageVersionSuffix>
4+
<PackageVersionSuffix Condition=" '$(BUILD_BUILDID)' != '' ">$(PackageVersionSuffix).$(BUILD_BUILDID)</PackageVersionSuffix>
5+
</PropertyGroup>
6+
<ItemGroup>
7+
<_NuGetBuildFolders Include="build\;buildTransitive\" />
8+
<_TfmNuGetBuildFolders Include="@(_NuGetBuildFolders->'%(Identity)monoandroid90\');@(_NuGetBuildFolders->'%(Identity)net6.0-android30.0\')" />
9+
</ItemGroup>
10+
</Project>

azure-pipelines.yml

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ resources:
1717
name: xamarin/XamarinComponents
1818
endpoint: xamarin
1919

20+
variables:
21+
DotNet6Version: 6.0.100-preview.1.21103.13
22+
DotNet6AndroidMsi: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/net6/4494116/master/d28ba53e1a6eff1a41e29ec50c60e3d45e6e3168/Microsoft.NET.Workload.Android.11.0.200.117.msi
23+
DotNet6AndroidPkg: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/net6/4494116/master/d28ba53e1a6eff1a41e29ec50c60e3d45e6e3168/Microsoft.NET.Workload.Android-11.0.200-ci.d28ba53e1a6eff1a41e29ec50c60e3d45e6e3168.117.pkg
24+
XamarinAndroidVsix: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/4494116/master/d28ba53e1a6eff1a41e29ec50c60e3d45e6e3168/signed/Xamarin.Android.Sdk-11.2.99.117.vsix
25+
XamarinAndroidPkg: https://dl.internalx.com/vsts-devdiv/Xamarin.Android/public/4494116/master/d28ba53e1a6eff1a41e29ec50c60e3d45e6e3168/xamarin.android-11.2.99.117.pkg
26+
2027
jobs:
2128
- template: .ci/build.yml@components
2229
parameters:
@@ -38,15 +45,38 @@ jobs:
3845
- AndroidEasingFunctions
3946
- Square
4047
- JakeWharton.Picasso2OkHttp3Downloader
48+
dotnet: ''
49+
initSteps:
50+
- bash: >
51+
export DOTNET_ROOT=/usr/local/share/dotnet/ &&
52+
export PATH="$DOTNET_ROOT:~/.dotnet/tools:$PATH" &&
53+
curl -L https://dot.net/v1/dotnet-install.sh > dotnet-install.sh &&
54+
sh dotnet-install.sh --version $(DotNet6Version) --install-dir $DOTNET_ROOT --verbose &&
55+
dotnet --list-sdks &&
56+
echo "##vso[task.setvariable variable=PATH]$PATH"
57+
displayName: install .NET $(DotNet6Version)
58+
condition: eq(variables['System.JobName'], 'macos')
59+
- pwsh: |
60+
$ProgressPreference = 'SilentlyContinue'
61+
Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile dotnet-install.ps1
62+
& .\dotnet-install.ps1 -Version $(DotNet6Version) -InstallDir "$env:ProgramFiles\dotnet\" -Verbose
63+
& dotnet --list-sdks
64+
displayName: install .NET $(DotNet6Version)
65+
condition: eq(variables['System.JobName'], 'windows')
4166
preBuildSteps:
4267
- pwsh: |
4368
dotnet tool install --global boots
44-
boots https://aka.ms/xamarin-android-commercial-d16-8-macos
69+
displayName: install .NET global tools
70+
- pwsh: |
71+
boots $(DotNet6AndroidPkg)
72+
boots $(XamarinAndroidPkg)
4573
condition: eq(variables['System.JobName'], 'macos')
74+
displayName: install Xamarin.Android
4675
- pwsh: |
47-
dotnet tool install --global boots
48-
boots https://aka.ms/xamarin-android-commercial-d16-8-windows
76+
boots $(DotNet6AndroidMsi)
77+
boots $(XamarinAndroidVsix)
4978
condition: eq(variables['System.JobName'], 'windows')
79+
displayName: install Xamarin.Android
5080
tools:
5181
- 'xamarin.androidbinderator.tool': '0.4.2'
5282
- 'xamarin.androidx.migration.tool': '1.0.7.1'

0 commit comments

Comments
 (0)