AndroidX icon indicating copy to clipboard operation
AndroidX copied to clipboard

Google Play Age Signals – R8 Duplicate Class Errors (androidx.tracing + androidx.savedstate) in Xamarin/Android Binding

Open kk25maj opened this issue 1 month ago • 2 comments

Description

We are integrating the Google Play Age Signals API (package: com.google.android.play:age-signals) using the official Xamarin binding package ‘Xamarin.Google.Android.Play.Age.Signals (0.0.1-beta02)’.

During R8/D8 compilation, the build fails with duplicate class errors:

Duplicate class: androidx.tracing.TraceKt$traceAsync$1 - tracing-android.aar - tracing-ktx.aar

Duplicate class: androidx.savedstate.ViewKt - savedstate-android.aar - savedstate-ktx.aar

This occurs even when:

Explicitly pinning AndroidX versions Excluding tracing/savedstate dependencies Adding ProGuard rules Using <ExcludeAssets> in NuGet The issue appears to originate from the Age Signals AAR pulling mismatched AndroidX dependencies (ktx + non-ktx) that produce conflicting classes.

We cannot integrate Age Signals into production until this is resolved.

Request:

Please verify the dependency structure for com.google.android.play:age-signals Update the AAR to depend consistently on either android or ktx variants Provide guidance for R8/D8 linking with Age Signals Environment:

.NET 9 Android R8 8.7.x Xamarin.AndroidX.* stable versions Xamarin.Google.Android.Play.Age.Signals 0.0.1-beta02 Thank you.

Steps to Reproduce

No response

Link to public reproduction project repository

No response

Version with bug

10.0.20

Is this a regression from previous behavior?

No, this is something new

Last version that worked well

Unknown/Other

Affected platforms

Android

Affected platform versions

No response

Did you find any workaround?

No response

Relevant log output


kk25maj avatar Dec 11 '25 03:12 kk25maj

This is probably duplicate of:

  • https://github.com/dotnet/android-libraries/issues/764

Can you share a sample project with this problem?

The fix is to update various packages to latest and the problem will go away.

jonathanpeppers avatar Dec 12 '25 22:12 jonathanpeppers

@jonathanpeppers I'm encourntering the same issue. I've attached a simple .Net MAUI project for Android / iOS & added a reference to 'Xamarin.Google.Android.Play.Age.Signals'. You should be able to reproduce by targeting the Android platform and attempting to compile.

MauiAVApp.zip

cnkHomero avatar Dec 15 '25 21:12 cnkHomero

exactly same issue .. as in attached zip file

is this solution ?

https://github.com/dotnet/android-libraries/issues/764

kk25maj avatar Dec 17 '25 19:12 kk25maj

is this solution ?

#764

Yes. That issue is there to give users feeling what needs to be done.

moljac avatar Dec 18 '25 14:12 moljac

THANKS jonathanpeppers HVALA MOLJAC !!!!!!

Solved – R8/D8 duplicate class errors with Age Signals

We hit R8/D8 errors like:

Duplicate class androidx.tracing.TraceKt$traceAsync$1

Duplicate class androidx.savedstate.ViewKt

when integrating Xamarin.Google.Android.Play.Age.Signals (0.0.1) on .NET 9 Android.

Root cause: Mismatched AndroidX *-android vs *-ktx package versions pulled transitively by Age Signals, resulting in the same classes being packaged twice.

How we fixed it:

Ran:

dotnet list package --include-transitive

and found version mismatches:

Tracing.Android 1.3.0.1 vs Tracing.Ktx 1.2.0.11

SavedState.Android 1.3.1.1 vs SavedState.Ktx 1.2.1.17

Explicitly pinned the KTX packages to match the Android ones in the Android project .csproj:

PackageReference Include="Xamarin.AndroidX.Tracing.Tracing.Ktx" Version="1.3.0.1" PackageReference Include="Xamarin.AndroidX.SavedState.SavedState.Ktx" Version="1.3.1.1"

Deleted bin/ and obj/, then ran:

dotnet restore dotnet build -c Release

Result: Release build succeeds, R8/D8 duplicate class errors are gone, Age Signals works correctly.

This matches the known AndroidX “type defined multiple times” issue caused by version misalignment between android and ktx artifacts.

kk25maj avatar Dec 19 '25 15:12 kk25maj

PackageReference Include="Xamarin.AndroidX.Tracing.Tracing.Ktx" Version="1.3.0.1"
PackageReference Include="Xamarin.AndroidX.SavedState.SavedState.Ktx" Version="1.3.1.1"

kk25maj avatar Dec 19 '25 15:12 kk25maj

HVALA MOLJAC !!!!!!

Nema na cemu!

moljac avatar Dec 19 '25 16:12 moljac

exactly same issue .. as in attached zip file

is this solution ?

#764

This is not direct solution, but bunch of samples to get idea what is going on. Libraries are living ecosystem and they change. Google moves types around, modifies libraries and that causes problems.

moljac avatar Jan 05 '26 17:01 moljac