From 8c8db3477f0f6a051f45de97ea8adf5f9d2bb88f Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Tue, 20 May 2025 16:57:29 -0500 Subject: [PATCH 1/6] Smaller set of changes from #1118 Taking a set of unrelated changes we can bring to main. This will make the diff in #1118 easier to review. --- .gitignore | 5 +++-- build/cake/binderate.cake | 2 ++ build/cake/build-and-package.cake | 21 +++++++++++++++++++ build/ci/build.yml | 2 +- build/ci/setup-environment.yml | 19 +---------------- .../provision-android.csproj | 5 +++++ source/_PackageLevelCustomizations.cshtml | 6 +++--- utilities.cake | 20 +++++++++++++----- 8 files changed, 51 insertions(+), 29 deletions(-) create mode 100644 build/scripts/provision-android/provision-android.csproj diff --git a/.gitignore b/.gitignore index 0c3e29fdf..faff81fd1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,10 @@ tools/ .gradle packages/ externals/ -output/ +output*/ Resource.designer.cs -generated/ +generated*/ +data/timings/ # User-specific files *.suo diff --git a/build/cake/binderate.cake b/build/cake/binderate.cake index b355bdf51..28ec0a757 100644 --- a/build/cake/binderate.cake +++ b/build/cake/binderate.cake @@ -7,6 +7,8 @@ Task ("binderate") .IsDependentOn ("javadocs-gps") .Does (() => { + EnsureDirectoryExists("./output"); + var configFile = MakeAbsolute (new FilePath ("./config.json")).FullPath; var basePath = MakeAbsolute (new DirectoryPath ("./")).FullPath; diff --git a/build/cake/build-and-package.cake b/build/cake/build-and-package.cake index 0e372ab6a..624fdc2b0 100644 --- a/build/cake/build-and-package.cake +++ b/build/cake/build-and-package.cake @@ -20,6 +20,27 @@ Task ("nuget") ); }); +Task ("nuget-pack-without-build") + .Does + ( + () => + { + var settings = new DotNetMSBuildSettings () + .SetConfiguration (CONFIGURATION) + .EnableBinaryLogger ($"./output/nuget-pack-without-build.{CONFIGURATION}.binlog") + .WithProperty ("NoBuild", "true") + .WithProperty ("PackageOutputPath", MakeAbsolute ((DirectoryPath)"./output/").FullPath) + .WithTarget ("Pack"); + + DotNetBuild + ( + "./generated/AndroidX.sln", + new DotNetBuildSettings { MSBuildSettings = settings } + ); + } + ); + + // Builds the .csproj projects Task ("libs") .IsDependentOn("metadata-verify") diff --git a/build/ci/build.yml b/build/ci/build.yml index e8468dd96..34cc3a946 100644 --- a/build/ci/build.yml +++ b/build/ci/build.yml @@ -4,7 +4,7 @@ parameters: buildPool: # VM pool information # Build Parameters - timeoutInMinutes: 300 # Max job runtime in minutes + timeoutInMinutes: 600 # Max job runtime in minutes runAPIScan: false # Run APIScan analysis runDotnetNextTest: false use1ESTemplate: true diff --git a/build/ci/setup-environment.yml b/build/ci/setup-environment.yml index 7ce398567..b3bdbd269 100644 --- a/build/ci/setup-environment.yml +++ b/build/ci/setup-environment.yml @@ -92,18 +92,11 @@ steps: jdkSourceOption: 'PreInstalled' - ${{ if eq(parameters.installAndroidDependencies, true) }}: - - task: DotNetCoreCLI@2 - displayName: Create android template - inputs: - command: custom - custom: new - arguments: android -o $(Agent.TempDirectory)/TempDroid - - task: DotNetCoreCLI@2 displayName: Install android dependencies inputs: command: build - projects: $(Agent.TempDirectory)/TempDroid/TempDroid.csproj + projects: build/scripts/provision-android/provision-android.csproj arguments: >- -t:InstallAndroidDependencies -p:AcceptAndroidSdkLicenses=true -p:AndroidSdkDirectory=${{ parameters.androidSdkRoot }} @@ -114,16 +107,6 @@ steps: Write-Host "##vso[task.setvariable variable=ANDROID_SDK_ROOT]${{ parameters.androidSdkRoot }}" displayName: Set ANDROID_SDK_ROOT to ${{ parameters.androidSdkRoot }} - - pwsh: | - if ($IsWindows) { - $env:JAVA_HOME = Get-ChildItem -Path "C:\Program Files (x86)\Android\openjdk" -Filter "*jdk*" | Select-Object -First 1 - } - $sdkManager = Get-ChildItem -Path "${{ parameters.androidSdkRoot }}\cmdline-tools" -Filter "sdkmanager*" -Recurse | Select-Object -First 1 - $yesInput = "y`n" * 10 - $yesInput | & $sdkManager --licenses - & $sdkManager "build-tools;29.0.3" "platforms;android-29" - displayName: Install extra Android SDK packages - - pwsh: | $url = "https://aka.ms/download-jdk/microsoft-jdk-11.0.26-windows-x64.zip" if ($IsMacOS) { diff --git a/build/scripts/provision-android/provision-android.csproj b/build/scripts/provision-android/provision-android.csproj new file mode 100644 index 000000000..fcf0fb159 --- /dev/null +++ b/build/scripts/provision-android/provision-android.csproj @@ -0,0 +1,5 @@ + + + net8.0-android + + diff --git a/source/_PackageLevelCustomizations.cshtml b/source/_PackageLevelCustomizations.cshtml index f63328583..2b6428c52 100644 --- a/source/_PackageLevelCustomizations.cshtml +++ b/source/_PackageLevelCustomizations.cshtml @@ -58,9 +58,9 @@ @* .NET 9 changes some binding internals that breaks some of our hand bound code. This property reverts to the old behavior. Once we are .NET 9+ we should redo our hand bound code and remove this. *@ -@if (@Model.NuGetPackageId == "Xamarin.AndroidX.Media3.ExoPlayer") +@if (@Model.NuGetPackageId == "Xamarin.AndroidX.Media3.ExoPlayer" ) { - + <_AndroidEmitLegacyInterfaceInvokers>true -} +} \ No newline at end of file diff --git a/utilities.cake b/utilities.cake index cc5ffb98f..46298f234 100644 --- a/utilities.cake +++ b/utilities.cake @@ -1,17 +1,27 @@ -// debugging prerequisity +/* +debugging prerequisity #tool nuget:?package=Cake.CoreCLR +*/ /* dotnet cake spell-check.cake dotnet cake spell-check.cake -t=spell-check */ -#addin nuget:?package=WeCantSpell.Hunspell&version=5.0.0 +#addin nuget:?package=WeCantSpell.Hunspell&version=6.0.0 #addin nuget:?package=Newtonsoft.Json&version=13.0.3 #addin nuget:?package=Cake.FileHelpers&version=7.0.0 -#addin nuget:?package=Mono.Cecil&version=0.11.5 +#addin nuget:?package=Mono.Cecil&version=0.11.6 #addin nuget:?package=HolisticWare.Xamarin.Tools.ComponentGovernance&version=0.0.1.4 #addin nuget:?package=HolisticWare.Core.Net.HTTP&version=0.0.4 #addin nuget:?package=HolisticWare.Core.IO&version=0.0.4 +#addin nuget:?package=CliWrap&version=3.8.2 + +/* +#addin nuget:https://api.nuget.org/v3/index.json?package=Mono.Cecil&version=0.11.6 +#addin nuget:https://api.nuget.org/v3/index.json??package=HolisticWare.Xamarin.Tools.ComponentGovernance&version=0.0.1.4 +#addin nuget:https://api.nuget.org/v3/index.json??package=HolisticWare.Core.Net.HTTP&version=0.0.4 +#addin nuget:https://api.nuget.org/v3/index.json??package=HolisticWare.Core.IO&version=0.0.4 +*/ #load "build/cake/performance-timings.cake" @@ -31,8 +41,8 @@ string file_spell_errors = "./output/spell-errors.txt"; List spell_errors = null; JArray binderator_json_array = null; -List<(string, string, string, string)> mappings_artifact_nuget = new List<(string, string, string, string)>(); -Dictionary Licenses = new Dictionary(); +List<(string, string, string, string)> mappings_artifact_nuget = new (); +Dictionary Licenses = new (); // modifying default method for licenses Manifest.Defaults.VersionBasedOnFullyQualifiedArtifactIdDelegate = delegate(string fully_qualified_artifact_id) From d2161fe622fa5ca6f1863891b3ffbc8adeb93dd1 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 21 May 2025 07:48:54 -0500 Subject: [PATCH 2/6] Update provision-android.csproj --- build/scripts/provision-android/provision-android.csproj | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build/scripts/provision-android/provision-android.csproj b/build/scripts/provision-android/provision-android.csproj index fcf0fb159..40e1d6583 100644 --- a/build/scripts/provision-android/provision-android.csproj +++ b/build/scripts/provision-android/provision-android.csproj @@ -2,4 +2,9 @@ net8.0-android + + + + + From a419f564e0549594c6457405fb24836bda0d57d5 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 21 May 2025 08:27:09 -0500 Subject: [PATCH 3/6] Update setup-environment.yml `-p:AndroidManifestType=GoogleV2` --- build/ci/setup-environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/setup-environment.yml b/build/ci/setup-environment.yml index b3bdbd269..664352fe2 100644 --- a/build/ci/setup-environment.yml +++ b/build/ci/setup-environment.yml @@ -98,7 +98,7 @@ steps: command: build projects: build/scripts/provision-android/provision-android.csproj arguments: >- - -t:InstallAndroidDependencies -p:AcceptAndroidSdkLicenses=true + -t:InstallAndroidDependencies -p:AcceptAndroidSdkLicenses=true -p:AndroidManifestType=GoogleV2 -p:AndroidSdkDirectory=${{ parameters.androidSdkRoot }} -v:n -bl:output/install-android-dependencies.binlog retryCountOnTaskFailure: 3 From 17791b656d9a53bbd398ee9c069f3bd5f8492da7 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 21 May 2025 09:58:00 -0500 Subject: [PATCH 4/6] Revert "Update setup-environment.yml" This reverts commit a419f564e0549594c6457405fb24836bda0d57d5. --- build/ci/setup-environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ci/setup-environment.yml b/build/ci/setup-environment.yml index 664352fe2..b3bdbd269 100644 --- a/build/ci/setup-environment.yml +++ b/build/ci/setup-environment.yml @@ -98,7 +98,7 @@ steps: command: build projects: build/scripts/provision-android/provision-android.csproj arguments: >- - -t:InstallAndroidDependencies -p:AcceptAndroidSdkLicenses=true -p:AndroidManifestType=GoogleV2 + -t:InstallAndroidDependencies -p:AcceptAndroidSdkLicenses=true -p:AndroidSdkDirectory=${{ parameters.androidSdkRoot }} -v:n -bl:output/install-android-dependencies.binlog retryCountOnTaskFailure: 3 From 07f394d20863fc98fdda0d28d41bb4511ef69c78 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 21 May 2025 09:58:02 -0500 Subject: [PATCH 5/6] Revert "Update provision-android.csproj" This reverts commit d2161fe622fa5ca6f1863891b3ffbc8adeb93dd1. --- build/scripts/provision-android/provision-android.csproj | 5 ----- 1 file changed, 5 deletions(-) diff --git a/build/scripts/provision-android/provision-android.csproj b/build/scripts/provision-android/provision-android.csproj index 40e1d6583..fcf0fb159 100644 --- a/build/scripts/provision-android/provision-android.csproj +++ b/build/scripts/provision-android/provision-android.csproj @@ -2,9 +2,4 @@ net8.0-android - - - - - From f4b3091223ac74fe9e996ffd40971e3aa6e83e17 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 21 May 2025 09:58:57 -0500 Subject: [PATCH 6/6] Update setup-environment.yml --- build/ci/setup-environment.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/build/ci/setup-environment.yml b/build/ci/setup-environment.yml index b3bdbd269..5dd422e0d 100644 --- a/build/ci/setup-environment.yml +++ b/build/ci/setup-environment.yml @@ -107,6 +107,16 @@ steps: Write-Host "##vso[task.setvariable variable=ANDROID_SDK_ROOT]${{ parameters.androidSdkRoot }}" displayName: Set ANDROID_SDK_ROOT to ${{ parameters.androidSdkRoot }} + - pwsh: | + if ($IsWindows) { + $env:JAVA_HOME = Get-ChildItem -Path "C:\Program Files (x86)\Android\openjdk" -Filter "*jdk*" | Select-Object -First 1 + } + $sdkManager = Get-ChildItem -Path "${{ parameters.androidSdkRoot }}\cmdline-tools" -Filter "sdkmanager*" -Recurse | Select-Object -First 1 + $yesInput = "y`n" * 10 + $yesInput | & $sdkManager --licenses + & $sdkManager "build-tools;29.0.3" "platforms;android-29" + displayName: Install extra Android SDK packages + - pwsh: | $url = "https://aka.ms/download-jdk/microsoft-jdk-11.0.26-windows-x64.zip" if ($IsMacOS) {