Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -582,10 +582,11 @@ public void TestFacebook () {{
static IEnumerable<object[]> GetAgpGradleVersionTestData ()
{
// AGP 8.5.0 with Gradle 8.7 - baseline, tests existing behavior
yield return new object[] { "8.5.0", "8.7" };
// AGP 8.5.0 only supports up to compileSdk 34
yield return new object[] { "8.5.0", "8.7", 34 };
// AGP 9.0.0 with Gradle 9.1.0 - tests the Gradle 9.x stricter Kotlin type checking fix
// Note: Full version "9.1.0" is required for the download URL to work correctly
yield return new object[] { "9.0.0", "9.1.0" };
yield return new object[] { "9.0.0", "9.1.0", XABuildConfig.AndroidDefaultTargetDotnetApiLevel.Major };
}

/// <summary>
Expand All @@ -595,9 +596,9 @@ static IEnumerable<object[]> GetAgpGradleVersionTestData ()
/// </summary>
[Test]
[TestCaseSource (nameof (GetAgpGradleVersionTestData))]
public void BindLibraryWithMultipleGradleVersions (string agpVersion, string gradleVersion)
public void BindLibraryWithMultipleGradleVersions (string agpVersion, string gradleVersion, int compileSdk)
{
var gradleProject = AndroidGradleProject.CreateDefault (GradleTestProjectDir, agpVersion, gradleVersion);
var gradleProject = AndroidGradleProject.CreateDefault (GradleTestProjectDir, agpVersion, gradleVersion, compileSdk: compileSdk);
var gradleModule = gradleProject.Modules.First ();
var moduleName = gradleModule.Name;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;

using Xamarin.Android.Tools;

namespace Xamarin.ProjectTools
{
Expand All @@ -16,13 +17,13 @@ public class AndroidGradleProject
/// <summary>
/// Android Gradle Plugin version (e.g., "8.5.0", "9.0.0")
/// </summary>
public string AgpVersion { get; set; } = "8.5.0";
public string AgpVersion { get; set; } = "9.1.0";

/// <summary>
/// Gradle wrapper version to use (e.g., "8.12", "9.0").
/// If null or empty, the Gradle wrapper version generated by gradle init is used.
/// Defaults to "9.1.0". If set to null or empty, the Gradle wrapper version generated by gradle init is used.
/// </summary>
public string? GradleVersion { get; set; }
public string? GradleVersion { get; set; } = "9.1.0";

GradleCLI gradleCLI = new GradleCLI ();

Expand Down Expand Up @@ -76,14 +77,15 @@ public static AndroidGradleProject CreateDefault (string projectDir, bool isAppl
/// <summary>
/// Creates a default Gradle project with specified AGP and Gradle versions.
/// </summary>
public static AndroidGradleProject CreateDefault (string projectDir, string agpVersion, string? gradleVersion, bool isApplication = false)
public static AndroidGradleProject CreateDefault (string projectDir, string agpVersion, string? gradleVersion, bool isApplication = false, int? compileSdk = null)
{
var proj = new AndroidGradleProject (projectDir) {
AgpVersion = agpVersion,
GradleVersion = gradleVersion,
Modules = {
new AndroidGradleModule (Path.Combine (projectDir, "TestModule")) {
IsApplication = isApplication,
CompileSdk = compileSdk ?? XABuildConfig.AndroidDefaultTargetDotnetApiLevel.Major,
},
},
};
Expand Down