Syncfusion вызывает ошибки сборки после перехода на AndroidX в Xamarin Forms

Я получаю ошибки сборки после переноса моего проекта Xamarin Forms на AndroidX. Все ошибки являются ссылками на зависимости в нескольких пакетах:

Can not resolve reference: `Xamarin.Android.Support.v7.RecyclerView`, referenced by `Syncfusion.SfAutoComplete.Android`. Please add a NuGet package or assembly reference for `Xamarin.Android.Support.v7.RecyclerView`, or remove the reference to `Syncfusion.SfAutoComplete.Android`.    Voltsec.Android         
Can not resolve reference: `Xamarin.Android.Support.Compat`, referenced by `Syncfusion.SfListView.XForms.Android`. Please add a NuGet package or assembly reference for `Xamarin.Android.Support.Compat`, or remove the reference to `Syncfusion.SfListView.XForms.Android`.    Voltsec.Android         
Can not resolve reference: `Xamarin.Android.Support.SwipeRefreshLayout`, referenced by `Syncfusion.SfPullToRefresh.XForms.Android`. Please add a NuGet package or assembly reference for `Xamarin.Android.Support.SwipeRefreshLayout`, or remove the reference to `Syncfusion.SfPullToRefresh.XForms.Android`.  Voltsec.Android         
Can not resolve reference: `Xamarin.Android.Support.v4`, referenced by `XLabs.Forms.Droid`. Please add a NuGet package or assembly reference for `Xamarin.Android.Support.v4`, or remove the reference to `XLabs.Forms.Droid`.  Voltsec.Android         
Can not resolve reference: `Xamarin.Android.Support.v7.AppCompat`, referenced by `Syncfusion.Buttons.XForms.Android`. Please add a NuGet package or assembly reference for `Xamarin.Android.Support.v7.AppCompat`, or remove the reference to `Syncfusion.Buttons.XForms.Android`.  Voltsec.Android         
Can not resolve reference: `Xamarin.Android.Support.v7.RecyclerView`, referenced by `Sharpnado.Presentation.Forms.Droid`. Please add a NuGet package or assembly reference for `Xamarin.Android.Support.v7.RecyclerView`, or remove the reference to `Sharpnado.Presentation.Forms.Droid`.  

Похоже, преступниками являются Syncfusion, XLabs и Sharpnado.

Я не совсем уверен, как решить эту проблему. Вот пакеты, которые я сейчас установил в своем проекте Android:

    <PackageReference Include="Autofac">
      <Version>5.1.2</Version>
    </PackageReference>
    <PackageReference Include="Newtonsoft.Json">
      <Version>12.0.3</Version>
    </PackageReference>
    <PackageReference Include="Plugin.CurrentActivity">
      <Version>2.1.0.4</Version>
    </PackageReference>
    <PackageReference Include="Plugin.Permissions">
      <Version>6.0.0-beta</Version>
    </PackageReference>
    <PackageReference Include="Refit">
      <Version>5.1.54</Version>
    </PackageReference>
    <PackageReference Include="Rg.Plugins.Popup">
      <Version>1.2.0.223</Version>
    </PackageReference>
    <PackageReference Include="RtspClientSharp">
      <Version>1.3.3</Version>
    </PackageReference>
    <PackageReference Include="Sharpnado.Presentation.Forms">
      <Version>1.4.0</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.Buttons">
      <Version>18.1.0.42</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfAutoComplete">
      <Version>18.1.0.42</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfBusyIndicator">
      <Version>18.1.0.42</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfChart">
      <Version>18.1.0.42</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfListView">
      <Version>18.1.0.42</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfPullToRefresh">
      <Version>18.1.0.42</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugin.DeviceInfo">
      <Version>4.2.0-beta</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugin.Media">
      <Version>5.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.Core">
      <Version>1.2.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.SwipeRefreshLayout">
      <Version>1.0.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4">
      <Version>1.0.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.AppCompat">
      <Version>1.1.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.CardView">
      <Version>1.0.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.RecyclerView">
      <Version>1.1.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.AppCompat.Resources">
      <Version>1.1.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.MediaRouter">
      <Version>1.1.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.Migration">
      <Version>1.0.3</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Essentials">
      <Version>1.5.2</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.FFImageLoading">
      <Version>2.4.11.982</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.FFImageLoading.Forms">
      <Version>2.4.11.982</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Forms" Version="4.6.0.529-pre3" />
    <PackageReference Include="Xamarin.Google.Android.Material" Version="1.1.0-rc3" />
    <PackageReference Include="XLabs.Forms">
      <Version>2.3.0-pre05</Version>
    </PackageReference>

Я ориентируюсь на Android 10.0 (Q)

Есть предложения попробовать?


person Mike Luken    schedule 06.04.2020    source источник
comment
сообщите об этом в службу поддержки syncfusion. Им всегда нужно много времени, чтобы обновить Xamarin Forms, и потребуется некоторое время, пока они не сделают библиотеку совместимой с Android10.   -  person magicandre1981    schedule 06.04.2020
comment
Я подумал, что где-то читал, что если сторонние зависимости, подобные этим, еще не были перенесены на AndroidX, есть обходной путь. Я думал, что в этом смысл пакетов Xamarin.AndroidX.Legacy.Support *?   -  person Mike Luken    schedule 06.04.2020
comment
Тьфу забудь. Я добавил зависимости, которые он запрашивает, и теперь он волшебным образом работает. Я знаю, что пробовал это вчера, но что-то должно быть кешировано. Я удалил папки obj и bin, может быть, это то, что очистило его. Но, во всяком случае, сейчас он строится.   -  person Mike Luken    schedule 06.04.2020
comment
Хорошо, опубликуйте в качестве ответа, что вы сделали подробно   -  person magicandre1981    schedule 06.04.2020
comment
@Mike Спасибо, что поделился. Вы можете отправить ответ и принять его. Это поможет другим, у кого есть аналогичная проблема.   -  person Wendy Zang - MSFT    schedule 07.04.2020


Ответы (2)


Чтобы устранить ошибку компиляции, связанную с элементами управления синхронизацией, вы можете добавить следующие пакеты в проект Android.

Xamarin.Android.Support.v7.RecyclerView 
Xamarin.Android.Support.Compat
Xamarin.Android.Support.SwipeRefreshLayout
Xamarin.Android.Support.v7.AppCompat
person Sakthi    schedule 15.04.2020
comment
Цель состоит в том, чтобы отойти от библиотек поддержки и перейти к библиотекам AndroidX, так какой смысл добавлять библиотеки поддержки ?? - person Tom el Safadi; 23.05.2020

Попробуйте использовать Android 9 в качестве целевой платформы. Сегодня я столкнулся с той же проблемой, и после установки Target Framework на Android 9 (это был Android 10) все волшебным образом начало строиться.

Также я сообщил об этом в службу поддержки syncfusion. Я обновлю этот ответ, когда они ответят.

ОБНОВЛЕНИЕ: ответ службы поддержки syncfusion

Мы хотели бы сообщить вам, что наши кнопки (SfButton, SfCheckBox, SfRadioButton, SfSegmentedConntrol, SfChipGroup, SfChip) совместимы с поддержкой AndroidX. Но в настоящее время мы сталкиваемся с этой проблемой, связанной с зависимым пакетом AppCompat.

Мы планируем обновить XF системы управления версиями до последней версии для решения этой проблемы с зависимым пакетом, которая будет доступна в нашем выпуске Volume 3,2020.

Чтобы решить эту проблему, добавьте требуемый пакет NuGet вручную. Установите Xamarin.Android.Support.v7.AppCompat вручную

ОБНОВЛЕНИЕ 2: проблема устранена. Syncfusion больше не требует поддержки Nugets

person Максим Кошевой    schedule 06.06.2020