You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Google Play Age Signals – R8 Duplicate Class Errors (androidx.tracing + androidx.savedstate) in Xamarin/Android Binding #1332
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:
Explicitly pinning AndroidX versions
Excluding tracing/savedstate dependencies
Adding ProGuard rules
Using 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:
@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.
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:
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.
Activity
jonathanpeppers commentedon Dec 12, 2025
This is probably duplicate of:
Type XYZ is defined multiple times||packages generated by more than one managed type#764Can you share a sample project with this problem?
The fix is to update various packages to latest and the problem will go away.
cnkHomero commentedon Dec 15, 2025
@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
kk25maj commentedon Dec 17, 2025
exactly same issue .. as in attached zip file
is this solution ?
#764
moljac commentedon Dec 18, 2025
Yes. That issue is there to give users feeling what needs to be done.
kk25maj commentedon Dec 19, 2025
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 commentedon Dec 19, 2025
moljac commentedon Dec 19, 2025
Nema na cemu!
moljac commentedon Jan 5, 2026
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.