diff --git a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Microsoft.Android.Sdk.Bindings.Gradle.targets b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Microsoft.Android.Sdk.Bindings.Gradle.targets
index 5f7afd0fbf5..cdc6bed6a93 100644
--- a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Microsoft.Android.Sdk.Bindings.Gradle.targets
+++ b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Microsoft.Android.Sdk.Bindings.Gradle.targets
@@ -14,7 +14,8 @@ This file contains MSBuild targets that support building and operating on Androi
<_AGPOutDirAbs>$(IntermediateOutputPath)gradle/
<_AGPOutDirAbs Condition=" !$([System.IO.Path]::IsPathRooted('$(_AGPOutDirAbs)')) ">$(MSBuildProjectDirectory)/$(_AGPOutDirAbs)
- <_AGPInitScriptPath>$(_AGPOutDirAbs)net.android.init.gradle.kts
+
+ <_AGPInitScriptPath Condition=" '$(_AGPInitScriptPath)' == '' ">$(_AGPOutDirAbs)net.android.init.gradle.kts
<_BuildAndroidGradleProjectsStamp>$(_AndroidStampDirectory)_BuildAndroidGradleProjects.stamp
@@ -74,7 +75,9 @@ This file contains MSBuild targets that support building and operating on Androi
+
@@ -117,7 +120,7 @@ This file contains MSBuild targets that support building and operating on Androi
Condition=" '@(AndroidGradleProject->Count())' != '0' "
DependsOnTargets="_CalculateAndroidGradleProjectOutputPath" >
rootProject.allprojects {
afterEvaluate {
- layout.buildDirectory.set(file(gradle.startParameter.projectProperties["netAndroidBuildDirOverride"]))
+ layout.buildDirectory.set(file(buildDir))
}
}
}
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidGradleProjectTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidGradleProjectTests.cs
index 2ecd6eaf883..7ac1aeefb41 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidGradleProjectTests.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidGradleProjectTests.cs
@@ -574,5 +574,56 @@ public void TestFacebook () {{
FileAssert.Exists (Path.Combine (Root, builder.ProjectDirectory, proj.OutputPath, $"{moduleName}-release.aar"));
}
+ ///
+ /// Test case data for AGP/Gradle version combinations.
+ /// Gradle 9.x has stricter Kotlin type checking for null safety.
+ /// See: https://github.com/dotnet/android/issues/10737
+ ///
+ static IEnumerable