Android-приложение .NET MAUI не создается из-за ошибки Java, связанной с зависимостями AndroidX

Я переношу приложение Xamarin.Forms в .NET MAUI и исправляю различные проблемы и ошибки, последняя из которых была решена добавлением двух ссылок:

  • Xamarin.AndroidX.Collection
  • Xamarin.AndroidX.Collection.Ktx

как было предложено здесь, что, похоже, помогло решить очень похожую JAVA ошибку, но появилось еще одно всплывающее окно:

Error   JAVA0000    Error in obj\Debug\net8.0-android\lp\141\jl\classes.jar:android/support/v4/app/INotificationSideChannel$Stub.class:
Type android.support.v4.app.INotificationSideChannel$Stub is defined multiple times: obj\Debug\net8.0-android\lp\141\jl\classes.jar:android/support/v4/app/INotificationSideChannel$Stub.class, obj\Debug\net8.0-android\lp\28\jl\bin\classes.jar:android/support/v4/app/INotificationSideChannel$Stub.class
Compilation failed
java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: obj\Debug\net8.0-android\lp\141\jl\classes.jar
android/support/v4/app/INotificationSideChannel$Stub.class
    at com.android.tools.r8.utils.R0.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:126)
    at com.android.tools.r8.D8.main(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:5)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: obj\Debug\net8.0-android\lp\141\jl\classes.jar:android/support/v4/app/INotificationSideChannel$Stub.class
    at Version.fakeStackEntry(Version_8.1.56.java:0)
    at com.android.tools.r8.M.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:5)
    at com.android.tools.r8.utils.R0.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:81)
    at com.android.tools.r8.utils.R0.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:32)
    at com.android.tools.r8.utils.R0.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:31)
    at com.android.tools.r8.utils.R0.b(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:2)
    at com.android.tools.r8.D8.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:26)
    at com.android.tools.r8.D8.b(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:13)
    at com.android.tools.r8.D8.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:24)
    at com.android.tools.r8.utils.R0.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:113)
    ... 1 more
Caused by: com.android.tools.r8.utils.b: Type android.support.v4.app.INotificationSideChannel$Stub is defined multiple times: obj\Debug\net8.0-android\lp\141\jl\classes.jar:android/support/v4/app/INotificationSideChannel$Stub.class, obj\Debug\net8.0-android\lp\28\jl\bin\classes.jar:android/support/v4/app/INotificationSideChannel$Stub.class
    at com.android.tools.r8.utils.O2.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:21)
    at com.android.tools.r8.utils.O2.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:26)
    at com.android.tools.r8.utils.A2.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:44)
    at com.android.tools.r8.utils.A2.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:10)
    at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2056)
    at com.android.tools.r8.utils.A2.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:6)
    at com.android.tools.r8.graph.b4$a.e(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:7)
    at com.android.tools.r8.dex.c.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:58)
    at com.android.tools.r8.dex.c.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:9)
    at com.android.tools.r8.dex.c.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:8)
    at com.android.tools.r8.D8.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:29)
    at com.android.tools.r8.D8.d(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:17)
    at com.android.tools.r8.D8.c(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:1)
    at com.android.tools.r8.utils.R0.a(R8_8.1.56_756d1f50f618dd1c39c000f11defb367a21e9e866e3401b884be16c0950f6f79:28)
    ... 6 more
Directory 'obj\Debug\net8.0-android\lp\141' is from 'androidx.core.core.aar'.   ARC.Mobile.Android      1   

Самый конец ошибки указывает на проблему с зависимостями AndroidX, но я здесь совершенно ничего не понимаю.

Обновлено: Ссылки на мои пакеты следующие:

<PackageReference Include = "CommunityToolkit.Maui.Markup" Version = "4.0.0" />
<PackageReference Include = "Controls.UserDialogs.Maui" Version = "1.5.4" />
<PackageReference Include = "IdentityModel.OidcClient" Version = "6.0.0" />
<PackageReference Include = "Syncfusion.Maui.Core" Version = "26.1.35" />
<PackageReference Include = "Xamarin.AndroidX.Collection" Version = "1.4.0.4" />
<PackageReference Include = "Xamarin.AndroidX.Collection.Ktx" Version = "1.4.0.3" />
<PackageReference Include = "Xamarin.Azure.NotificationHubs.Android" Version = "1.1.4.1" />
<PackageReference Include = "Xamarin.Google.Dagger" Version = "2.49.0.1" />
<PackageReference Include = "Xamarin.GooglePlayServices.Base" Version = "118.3.0.1" />
<PackageReference Include = "Microsoft.Maui.Controls" Version = "8.0.40" />
<PackageReference Include = "Microsoft.Maui.Controls.Compatibility" Version = "8.0.40" />
0
0
535
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я столкнулся с той же проблемой при использовании этого плагина OCR. Вы видите это из-за плагина, который используете?

Решением стало добавление ссылки на Xamarin.AndroidX.Collection.Ktx напрямую. Итак, добавьте:

<PackageReference Include = "Xamarin.AndroidX.Fragment.Ktx" Condition = "$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">
    <Version>1.6.2.2</Version>
</PackageReference>

в ваш файл csproj. Я вижу, что для вас упомянутый тип немного отличается, поэтому для вас это может быть еще одна зависимость, вам придется с этим поиграть.

Убедитесь, что вы используете последние версии всех имеющихся у вас зависимостей. Я думаю, это связано с использованием более старых версий.

Ответ принят как подходящий

Это сложная проблема, в которой сохраняются разные случаи, поэтому пользователи могут понять, как обойти этот класс проблем:

https://github.com/xamarin/AndroidX/issues/764

В вашем случае попробуйте явно добавить:

<PackageReference Include = "Xamarin.AndroidX.Core" Version = "1.13.1.1" />
<PackageReference Include = "Xamarin.AndroidX.Legacy.Support.V4" Version = "1.0.0.25" />

Если это не поможет, мне понадобится список ваших PaxkageReference

Я обновил вопрос списком ссылок на пакеты. Когда я добавляю два, которые вы упомянули, вместо этого я получаю следующее: Caused by: com.android.tools.r8.utils.b: Type androidx.activity.ActivityViewModelLazyKt$viewModels$1 is defined multiple times. Это как кроличья нора

zmaten 12.06.2024 08:50

Другие вопросы по теме