KEMBAR78
[android] Update gradle.properties by rmarinho · Pull Request #30543 · dotnet/maui · GitHub
Skip to content

Conversation

@rmarinho
Copy link
Member

@rmarinho rmarinho commented Jul 10, 2025

Description of Change

This pull request introduces updates to build configurations, Android compatibility, and namespace adjustments to improve project maintainability and compatibility with newer tools and frameworks.

Build Configuration Updates:

  • Updated gradle-wrapper.properties to use Gradle version 8.13, ensuring compatibility with the latest features and optimizations.
  • Changed the Android Gradle Plugin version in build.gradle to 8.11.1 for better integration with Gradle 8.x.
  • Added pluginManagement block in settings.gradle to centralize plugin repositories and changed repositoriesMode to PREFER_PROJECT for improved dependency resolution.

Android Compatibility Improvements:

  • Updated compileSdk and targetSdk versions to 35 in maui/build.gradle for compatibility with the latest Android SDK.
  • Enabled R8 full mode and non-transitive R classes in gradle.properties to optimize resource handling and reduce APK size.
  • Adjusted sourceCompatibility and targetCompatibility in maui/build.gradle to Java 17 for leveraging modern Java features.

Namespace and Resource Adjustments:

  • Removed the package attribute from AndroidManifest.xml to align with the updated namespace configuration.
  • Updated resource references in PlatformInterop.java and MauiCustomViewTarget.java to use the new namespace microsoft.maui. [1] [2]

Environment Variable Updates:

  • Added DOTNET_HOST_PATH environment variable in dotnet.cake to address a Windows-specific issue with Dev18.

@Copilot Copilot AI review requested due to automatic review settings July 10, 2025 17:56
@rmarinho rmarinho requested a review from a team as a code owner July 10, 2025 17:56
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a suppression flag to gradle.properties to enable building with Android SDK 34 without warnings from the Android Gradle plugin.

  • Introduces android.suppressUnsupportedCompileSdk=34 to silence unsupported compile SDK warnings.
  • Ensures compatibility when using SDK 34 in Android projects.

@rmarinho rmarinho removed the request for review from StephaneDelcroix July 10, 2025 17:56
@rmarinho
Copy link
Member Author

Build not happy

Copy link
Contributor

@jsuarezruiz jsuarezruiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C:\a\_work\1\s\.dotnet\packs\Microsoft.Android.Sdk.Windows\35.0.61\tools\Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: > A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action [C:\a\_work\1\s\src\Core\src\Core.csproj::TargetFramework=net9.0-android35.0]
C:\a\_work\1\s\.dotnet\packs\Microsoft.Android.Sdk.Windows\35.0.61\tools\Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:    > Android resource linking failed [C:\a\_work\1\s\src\Core\src\Core.csproj::TargetFramework=net9.0-android35.0]
C:\a\_work\1\s\.dotnet\packs\Microsoft.Android.Sdk.Windows\35.0.61\tools\Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:      ERROR:AAPT: aapt2.exe E 07-11 13:51:27  9828  9428 LoadedArsc.cpp:94] RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data. [C:\a\_work\1\s\src\Core\src\Core.csproj::TargetFramework=net9.0-android35.0]
C:\a\_work\1\s\.dotnet\packs\Microsoft.Android.Sdk.Windows\35.0.61\tools\Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:      aapt2.exe E 07-11 13:51:27  9828  9428 ApkAssets.cpp:149] Failed to load resources table in APK 'C:\Android\android-sdk\platforms\android-35\android.jar'. [C:\a\_work\1\s\src\Core\src\Core.csproj::TargetFramework=net9.0-android35.0]
C:\a\_work\1\s\.dotnet\packs\Microsoft.Android.Sdk.Windows\35.0.61\tools\Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:      error: failed to load include path C:\Android\android-sdk\platforms\android-35\android.jar. [C:\a\_work\1\s\src\Core\src\Core.csproj::TargetFramework=net9.0-android35.0]

The key error is this line:
aapt2.exe E 07-11 13:51:27 9828 9428 ApkAssets.cpp:149] Failed to load resources table in APK 'C:\Android\android-sdk\platforms\android-35\android.jar'.

@jonathanpeppers
Copy link
Member

I would open the project in latest stable Android Studio, and see if it prompts to update various things: gradle, Android gradle plugin, etc.

The error itself looks like the build used an older build-tools that contains an older aapt2.exe. And it doesn't know how to open API-35's android.jar.

Comment on lines 23 to 25
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would undo this line for now, we still build with Java source targeting 1.8, see for example:

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it could cause build warnings like:

Invoke-customs are only supported starting with Android O (--min-api 26)

@rmarinho
Copy link
Member Author

rmarinho commented Jul 16, 2025

@jonathanpeppers seems those changes made it worst.. maybe we still need the namespace change.

/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error MSB6006: "gradlew" exited with code 1. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: Downloading https://services.gradle.org/distributions/gradle-8.13-all.zip [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: ......................10%......................20%......................30%......................40%......................50%......................60%......................70%.......................80%......................90%......................100% [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: Welcome to Gradle 8.13! [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: Here are the highlights of this release: [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  - Daemon JVM auto-provisioning [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  - Enhancements for Scala plugin and JUnit testing [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  - Enhancements for Scala plugin and JUnit testing [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  - Improvements for build authors and plugin developers [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: For more details see https://docs.gradle.org/8.13/release-notes.html [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.13/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: Daemon will be stopped at the end of the build  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: w: file:///mnt/vss/_work/1/s/artifacts/obj/Core/Release/net9.0-android35.0/gradle/net.android.init.gradle.kts:11:36: Type mismatch: inferred type is String? but Any was expected [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: [Incubating] Problems report is available at: file:///mnt/vss/_work/1/s/src/Core/AndroidNative/build/reports/problems/problems-report.html [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: FAILURE: Build failed with an exception. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: * What went wrong: [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: A problem occurred configuring project ':maui'. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: > Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:    > Namespace not specified. Specify a namespace in the module's build file: /mnt/vss/_work/1/s/src/Core/AndroidNative/maui/build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:       [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:      If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000:  [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: * Try: [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: > Run with --stacktrace option to get the stack trace. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]
/mnt/vss/_work/1/s/.dotnet/packs/Microsoft.Android.Sdk.Linux/35.0.61/tools/Microsoft.Android.Sdk.Bindings.Gradle.targets(83,5): error XAGRDL0000: > Run with --info or --debug option to get more log output. [/mnt/vss/_work/1/s/src/Core/src/Core.csproj::TargetFramework=net9.0-android35.0]

@jonathanpeppers
Copy link
Member

@rmarinho no I think the error to fix is:

> Namespace not specified. Specify a namespace in the module's build file: /mnt/vss/_work/1/s/src/Core/AndroidNative/maui/build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.

Did Copilot hallucinate and put it on the wrong element?

android {
compileSdk 35
namespace "microsoft.maui"

You should also name it com.microsoft.maui to match what we had before:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.microsoft.maui">

Then you should be able to undo the change to the R class.

@PureWeen
Copy link
Member

PureWeen commented Aug 1, 2025

/rebase

@PureWeen PureWeen added this to the .NET 9 SR10 milestone Aug 1, 2025
@PureWeen PureWeen moved this from Todo to Ready To Review in MAUI SDK Ongoing Aug 1, 2025
@PureWeen
Copy link
Member

PureWeen commented Aug 1, 2025

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@PureWeen PureWeen modified the milestones: .NET 9 SR10, .NET 9 SR12 Aug 4, 2025
@rmarinho rmarinho merged commit 6b42583 into main Aug 5, 2025
127 of 130 checks passed
@rmarinho rmarinho deleted the fix-gradle branch August 5, 2025 09:25
@github-project-automation github-project-automation bot moved this from Ready To Review to Done in MAUI SDK Ongoing Aug 5, 2025
SuthiYuvaraj pushed a commit to SuthiYuvaraj/maui that referenced this pull request Aug 12, 2025
* Update gradle.properties

* [vs] Workaround for dev18

* Revert "Update gradle.properties"

This reverts commit 49e7f07.

* [android] Update build gradle for api 35

* Try again

* Try update other properties

* Remove deprecated lib

* [android] Revert some changes

* [android] Try fix android gradle namespace

* Remove from manifest the package name
rmarinho added a commit that referenced this pull request Aug 13, 2025
* Update gradle.properties

* [vs] Workaround for dev18

* Revert "Update gradle.properties"

This reverts commit 49e7f07.

* [android] Update build gradle for api 35

* Try again

* Try update other properties

* Remove deprecated lib

* [android] Revert some changes

* [android] Try fix android gradle namespace

* Remove from manifest the package name
@PureWeen PureWeen added the area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions label Aug 20, 2025
@github-actions github-actions bot locked and limited conversation to collaborators Sep 20, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants