Я создал новый проект Android в Visual Studio для Mac и установил пакеты NuGet Xamarin.Forms и Xamarin.Firebase.Messaging. Но я получаю следующую ошибку, если использую пакеты NuGet Xamarin.Forms и Xamarin.Firebase.Messaging в своем проекте Android:
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/32.0.476/tools/Xamarin.Android.D8.targets(5,5): ошибка: java.lang.RuntimeException: com.android. tools.r8.CompilationFailedException: не удалось выполнить компиляцию, источник: /Users/myname/.nuget/packages/xamarin.google.guava.listenablefuture/1.0.0.5/buildTransitive/net6.0-android31.0/…/…/jar /guava-listenablefuture.jar : com/google/common/util/concurrent/ListenableFuture.class
Я не получаю сообщение об ошибке, когда использую Xamarin.Forms только в своем проекте Android или если я использую Xamarin.Firebase.Messaging только в своем проекте Android.
Я использую Visual Studio для Mac 2022 17.4 (сборка 2406).
Как я могу использовать пакеты NuGet Xamarin.Forms и Xamarin.Firebase.Messaging вместе в моем проекте Android?
Что не так с моим Android-проектом?
Судя по вашему вопросу, я считаю, что вы добавляете библиотеки DLL firebase в свой общий проект, и это не то, что вы должны делать.
Это не общий проект. Я создал проект Android в VS для Mac. Затем я установил пакеты NuGet.
Это не будет работать. Как вы планируете кодировать свой пользовательский интерфейс? Существует ДВА разных способа использования Xamarin. Один Xamarin.Android. Это обычное кодирование «Android», но с использованием C# вместо java или kotlin. См. Пользовательские интерфейсы с Xamarin.Android . Второй Xamarin.Forms. Пример: Создайте макет стека. Это то, что я описываю в своем ответе. Какой подход вы будете использовать?
Я использую шаблон Android MonoGame для создания проекта Android и создаю проект общего кода. Затем я добавляю ссылку на проект в проекте Android в проект общего кода, а затем устанавливаю все пакеты Xamarin NuGet в проекте Android, чтобы использовать Xamarin в своих проектах.





Какой «шаблон проекта» вы использовали для создания этого?
Если вы не выбрали шаблон «Xamarin.Forms», вам не удастся добавить Xamarin.Forms.
Начните сначала и выберите Xamarin.Forms или пустое приложение. Строить. Вы должны увидеть НЕСКОЛЬКО проектов в своем решении: кросс-платформенный (ссылающийся на Xamarin.Forms nuget) и Android-проект.
Добавьте Xamarin.Firebase.Messaging в проект Android.
Конечным результатом является то, что Xamarin.Forms nuget является частью кроссплатформенного кода, реализация XFM для Android является частью кода Android.
Это два отдельных проекта; нет смысла иметь оба nugets в одном проекте.
Я использовал шаблон MonoGame Android для создания своего проекта, и в настоящее время в моем решении есть только этот проект.
Тогда зачем вам Xamarin Forms, если вы не используете общий код?
Я нашел ответ здесь: https://github.com/xamarin/AndroidX/issues/535
Кажется, теперь это работает. Я установил Xamarin.Google.Guava Version="31.1.0.4", затем установил Xamarin.Firebase.Messaging и, наконец, Xamarin.Forms. Кроме того, необходимо было добавить эту строку в мой файл .csproj:
<XamarinGoogleGuavaOptOut>true</XamarinGoogleGuavaOptOut>
Вы не должны использовать свои пакеты Firebase в своих библиотеках SCL. Вам нужно использовать DependencyServices для доступа к собственному коду.