AndroidX icon indicating copy to clipboard operation
AndroidX copied to clipboard

Package conflict between Xamarin.Firebase.Analytics and Xamarin.Firebase.Perf

Open soenneker opened this issue 8 months ago • 5 comments

Android framework version

net9.0-android

Affected platform version

Latest libraries/tools

Description

It's not possible to build with these two packages in the same MAUI project.

Steps to Reproduce

All one needs to do is create a new project with the latest version of Xamarin.Firebase.Analytics and Xamarin.Firebase.Perf and you get this error when compiling:

1>MSBUILD : java.exe error JAVA0000: Error in obj\Debug\net9.0-android\lp\294\jl\classes.jar:com/google/protobuf/DescriptorProtos$1.class:
1>MSBUILD : java.exe error JAVA0000: Type com.google.protobuf.DescriptorProtos$1 is defined multiple times: obj\Debug\net9.0-android\lp\294\jl\classes.jar:com/google/protobuf/DescriptorProtos$1.class, obj\Debug\net9.0-android\lp\337\jl\libs\8E428AF64A795598.jar:com/google/protobuf/DescriptorProtos$1.class
1>MSBUILD : java.exe error JAVA0000: Compilation failed
1>MSBUILD : java.exe error JAVA0000: java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: obj\Debug\net9.0-android\lp\294\jl\classes.jar
1>MSBUILD : java.exe error JAVA0000: com/google/protobuf/DescriptorProtos$1.class
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.to.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:131)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.R8.main(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:5)
1>MSBUILD : java.exe error JAVA0000: Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: obj\Debug\net9.0-android\lp\294\jl\classes.jar:com/google/protobuf/DescriptorProtos$1.class
1>MSBUILD : java.exe error JAVA0000: 	at Version.fakeStackEntry(Version_8.5.35.java:0)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.T.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:5)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.to.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:82)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.to.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:32)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.to.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:31)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.to.c(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:1)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.R8.b(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:35)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.R8.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:1548)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.to.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:118)
1>MSBUILD : java.exe error JAVA0000: 	... 1 more
1>MSBUILD : java.exe error JAVA0000: Caused by: com.android.tools.r8.internal.g: Type com.google.protobuf.DescriptorProtos$1 is defined multiple times: obj\Debug\net9.0-android\lp\294\jl\classes.jar:com/google/protobuf/DescriptorProtos$1.class, obj\Debug\net9.0-android\lp\337\jl\libs\8E428AF64A795598.jar:com/google/protobuf/DescriptorProtos$1.class
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.x50.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:21)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.LY.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:54)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.LY.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:10)
1>MSBUILD : java.exe error JAVA0000: 	at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2056)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.LY.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:6)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.graph.p4$a.d(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:6)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.dex.c.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:95)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.dex.c.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:44)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.dex.c.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:9)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.R8.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:110)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.R8.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:1547)
1>MSBUILD : java.exe error JAVA0000: 	at com.android.tools.r8.internal.to.a(R8_8.5.35_9c55004e7c41a17b1ed47c4e1952cb6778b3dac6afb6afc113a2737c3cde13e0:28)
1>MSBUILD : java.exe error JAVA0000: 	... 5 more
1>MSBUILD : java.exe error JAVA0000: Directory 'obj\Debug\net9.0-android\lp\294' is from 'protolite-well-known-types.aar'.
1>MSBUILD : java.exe error JAVA0000: Directory 'obj\Debug\net9.0-android\lp\337' is from 'Xamarin.Protobuf.JavaLite.aar'.

Did you find any workaround?

No workaround found.. but there probably is. I can't use dotnet list package transitive though because that's broken (https://github.com/dotnet/sdk/issues/36033)

Relevant log output


soenneker avatar Mar 22 '25 15:03 soenneker

@soenneker did you ever find a workaround to this? We're getting the exact same error when using Xamarin.Firebase.Analytics v122.3.0.1 and Xamarin.Firebase.Perf v121.0.5.1 (which are both the latest as of my post)

stricklandconsulting avatar May 08 '25 17:05 stricklandconsulting

I didn't. I suspect @moljac has seen this before though and could help.

soenneker avatar May 11 '25 03:05 soenneker

Have you tried explicitly adding:

<PackageReference Include="Xamarin.Firebase.Analytics" Version="122.3.0.1" />
<PackageReference Include="Xamarin.Firebase.Perf" Version="121.0.5.1" />

to your project package dependencies??

moljac avatar May 12 '25 12:05 moljac

I ended up solving it by including:

		<PackageReference Include="Xamarin.Firebase.Analytics" Version="121.5.1" />		
		<PackageReference Include="Xamarin.Firebase.Perf" Version="120.5.0" />

stricklandconsulting avatar May 12 '25 16:05 stricklandconsulting

@moljac This has been a longstanding issue since Xamarin.Firebase.Perf version 121.0.1 has been released. The latest working version is 121.0.0

Having the following packages installed together builds fine (latest Xamarin.Firebase.Analytics 122.3.0.1 and Xamarin.FIrebase.Perf 121.0.0):

<PackageReference Include="Xamarin.Firebase.Analytics" Version="122.3.0.1" />
<PackageReference Include="Xamarin.Firebase.Perf" Version="121.0.0" />

I have tried once again incrementally updating Xamarin.Firebase.Perf until I reached its latest published version (121.0.5.1), but each time the rebuild fails with the following error:

2>: Error JAVA0000 java: Error in obj/Debug/net9.0-android/lp/397/jl/classes.jar:com/google/protobuf/DescriptorProtos$1.class:
Type com.google.protobuf.DescriptorProtos$1 is defined multiple times: obj/Debug/net9.0-android/lp/397/jl/classes.jar:com/google/protobuf/DescriptorProtos$1.class, obj/Debug/net9.0-android/lp/453/jl/libs/8E428AF64A795598.jar:com/google/protobuf/DescriptorProtos$1.class
Compilation failed
java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: obj/Debug/net9.0-android/lp/397/jl/classes.jar
com/google/protobuf/DescriptorProtos$1.class
	at com.android.tools.r8.internal.yu.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:131)
	at com.android.tools.r8.D8.main(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:5)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: obj/Debug/net9.0-android/lp/397/jl/classes.jar:com/google/protobuf/DescriptorProtos$1.class
	at Version.fakeStackEntry(Version_8.7.18.java:0)
	at com.android.tools.r8.T.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:5)
	at com.android.tools.r8.internal.yu.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:82)
	at com.android.tools.r8.internal.yu.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:32)
	at com.android.tools.r8.internal.yu.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:31)
	at com.android.tools.r8.internal.yu.b(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:2)
	at com.android.tools.r8.D8.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:42)
	at com.android.tools.r8.D8.b(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:13)
	at com.android.tools.r8.D8.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:40)
	at com.android.tools.r8.internal.yu.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:118)
	... 1 more
Caused by: com.android.tools.r8.internal.g: Type com.google.protobuf.DescriptorProtos$1 is defined multiple times: obj/Debug/net9.0-android/lp/397/jl/classes.jar:com/google/protobuf/DescriptorProtos$1.class, obj/Debug/net9.0-android/lp/453/jl/libs/8E428AF64A795598.jar:com/google/protobuf/DescriptorProtos$1.class
	at com.android.tools.r8.internal.bd0.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:21)
	at com.android.tools.r8.internal.Z50.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:54)
	at com.android.tools.r8.internal.Z50.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:10)
	at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2048)
	at com.android.tools.r8.internal.Z50.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:6)
	at com.android.tools.r8.graph.s4$a.d(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:6)
	at com.android.tools.r8.dex.c.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:95)
	at com.android.tools.r8.dex.c.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:44)
	at com.android.tools.r8.dex.c.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:9)
	at com.android.tools.r8.D8.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:45)
	at com.android.tools.r8.D8.d(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:17)
	at com.android.tools.r8.D8.c(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:71)
	at com.android.tools.r8.internal.yu.a(R8_8.7.18_f8bee6d6fb926b7ebb3b15bf98f726f9d57471456ea20fce6d17d9a020197688:28)
	... 6 more
Directory 'obj/Debug/net9.0-android/lp/397' is from 'protolite-well-known-types.aar'.
Directory 'obj/Debug/net9.0-android/lp/453' is from 'Xamarin.Protobuf.JavaLite.aar'.

Digifais avatar May 13 '25 09:05 Digifais

It looks like this is caused by a known Firebase issue:

https://github.com/firebase/firebase-android-sdk/issues/5997

Native Android can work around this by pinning protobuf-javalite = "4.26.1", which works because protolite-well-known-types is constrained between protobuf-javalite versions (3.25.5 - 4.32.1) (see https://mvnrepository.com/artifact/com.google.firebase/protolite-well-known-types/18.0.1)

This doesn't appear to be possible for Android .NET because the nuget packaging constrains Xamarin.Protobuf.JavaLite (>= 4.31.1.1)

So there are two problems:

  1. Native Firebase issue
  2. Nuget packing for Xamarin.Protobuf.JavaLite doesn't match native versioning constraints, making the interim workaround unavailable for .NET

Would it be an easy enough thing to just adjust the package constraint for Xamarin.Protobuf.Javalite to match?

AdamEssenmacher avatar Sep 17 '25 20:09 AdamEssenmacher

+1

flipper09112 avatar Oct 27 '25 17:10 flipper09112

I found an extremely hacky workaround.

Just take the Xamarin.Protobuf.JavaLite.aar file from the Xamarin.Protobuf.JavaLite nuget package (version 4.26.1) and replace the matching file in your build machine's NuGet cache for whatever version is being resolved. This lets you sort of 'pin' the working binary without upsetting nuget.

AdamEssenmacher avatar Oct 28 '25 19:10 AdamEssenmacher