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..5dd422e0d 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 }}
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)