xamarin / Xamarin.Forms

Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
https://aka.ms/xamarin-upgrade
Other
5.63k stars 1.87k forks source link

[Bug][Android] Could not load signature of AndroidX.RecyclerView.Widget.RecyclerView+LayoutManager:OnInitializeAccessibilityNodeInfo due to: Could not resolve type with token #13975

Open aritchie opened 3 years ago

aritchie commented 3 years ago

Description

Xamarin Forms on Android 10 major target is crashing with

[] Could not load signature of AndroidX.RecyclerView.Widget.RecyclerView+LayoutManager:OnInitializeAccessibilityNodeInfo due to: Could not resolve type with token 0100004b from typeref (expected class 'AndroidX.Core.View.Accessibiity.AccessibilityNodeInfoCompat' in assembly 'Xamarin.AndroidX.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null') assembly:Xamarin.AndroidX.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null type:AndroidX.Core.View.Accessibiity.AccessibilityNodeInfoCompat member:(null) System.TypeLoadException: 'VTable setup of type ....

Steps to Reproduce

NOT FULLY VERIFIED

  1. Update only Xamarin.AndroidX.Core to the latest version
  2. Use a collectionview or a library like AiForms.SettingsView
  3. See crash as shown above

Expected Behavior

Does not crash

Actual Behavior

Crashes

Basic Information

The actual bug is here: https://github.com/xamarin/AndroidX/issues/276 The workaround fix is to bump your android head project to the following:

    <PackageReference Include="Xamarin.AndroidX.Core" Version="1.3.2.3" />
    <PackageReference Include="Xamarin.AndroidX.CustomView" Version="1.1.0.6" />
    <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.1.1.8" />
    <PackageReference Include="Xamarin.AndroidX.RecyclerView" Version="1.1.0.8" />

Environment

All Droid Environments

Show/Hide Visual Studio info ``` ```

Build Logs

Screenshots

Reproduction Link

Workaround

The actual bug is here: https://github.com/xamarin/AndroidX/issues/276 The workaround fix is to bump your android head project to the following:

    <PackageReference Include="Xamarin.AndroidX.Core" Version="1.3.2.3" />
    <PackageReference Include="Xamarin.AndroidX.CustomView" Version="1.1.0.6" />
    <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.1.1.8" />
    <PackageReference Include="Xamarin.AndroidX.RecyclerView" Version="1.1.0.8" />
aritchie commented 3 years ago

@Redth FYI as requested.

redradist commented 3 years ago

When I switch to this versions I got the following error:

  MaterialFormsEditTextBase.java(4, 8): [JAVAC0000]  error: cannot access OnReceiveContentViewBehavior
public class MaterialFormsEditTextBase
  class file for androidx.core.view.OnReceiveContentViewBehavior not found
ivanrlg commented 3 years ago

I have the same problem, any update?

aritchie commented 3 years ago

@ivanrlg @redradist please share additional information like what other packages you are using from both your head project and your shared code. When do you get this crash, is there a specific control about to be displayed? does it happen during the build or during startup? There is a version mismatch somewhere with your androidx libraries in your project.

samafshari commented 3 years ago

I had the same problem in an Android project when doing Release builds. The proposed workaround resolved my issue. To help with diagnosis, here's my csproj's release build config:

  <AndroidManagedSymbols>true</AndroidManagedSymbols>
    <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
    <AndroidUseAapt2>true</AndroidUseAapt2>
    <AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
    <AndroidLinkMode>None</AndroidLinkMode>
    <MandroidI18n />
    <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
    <AndroidLinkSkip>--linkskip=alarm</AndroidLinkSkip>
    <AotAssemblies>true</AotAssemblies>
    <EnableLLVM>true</EnableLLVM>
    <AndroidEnableProfiledAot>true</AndroidEnableProfiledAot>
    <BundleAssemblies>false</BundleAssemblies>
    <AndroidPackageFormat>aab</AndroidPackageFormat>
    <AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
    <AndroidEnableMultiDex>false</AndroidEnableMultiDex>
    <AndroidDexTool>d8</AndroidDexTool>

And the NuGets are:

<PackageReference Include="Acr.UserDialogs">
      <Version>7.1.0.475</Version>
    </PackageReference>
    <PackageReference Include="Forms9Patch">
      <Version>2.4.9</Version>
    </PackageReference>
    <PackageReference Include="modernhttpclient-updated">
      <Version>2.7.2</Version>
    </PackageReference>
    <PackageReference Include="Plugin.CurrentActivity">
      <Version>2.1.0.4</Version>
    </PackageReference>
    <PackageReference Include="Plugin.FirebasePushNotification">
      <Version>3.3.10</Version>
    </PackageReference>
    <PackageReference Include="Plugin.Toast">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Rg.Plugins.Popup">
      <Version>2.0.0.10</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.CommunityToolkit">
      <Version>1.2.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.CommunityToolkit.Markup">
      <Version>1.2.0</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.FFImageLoading.Transformations">
      <Version>2.4.11.982</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Firebase.Analytics">
      <Version>119.0.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Firebase.Messaging">
      <Version>121.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.3" />
    <PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
    <PackageReference Include="Xamarin.Forms.InputKit">
      <Version>3.5.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Forms.Visual.Material">
      <Version>5.0.0.2012</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Google.Dagger">
      <Version>2.37.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Forms">
      <Version>5.0.0.2012</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.AndroidX.Core" Version="1.3.2.3" />
    <PackageReference Include="Xamarin.AndroidX.CustomView" Version="1.1.0.6" />
    <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.1.1.8" />
    <PackageReference Include="Xamarin.AndroidX.RecyclerView" Version="1.1.0.8" />
    <PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.2.0" />
    <PackageReference Include="Xamarin.AndroidX.Palette" Version="1.0.0.5" />

    <PackageReference Include="ZXing.Net.Mobile.Forms">
      <Version>2.4.1</Version>
    </PackageReference>

NuGets for the netstandard 2.0 library:

    <PackageReference Include="Acr.UserDialogs" Version="7.1.0.475" />
    <PackageReference Include="Forms9Patch" Version="2.4.9" />
    <PackageReference Include="Microsoft.AppCenter" Version="4.3.0" />
    <PackageReference Include="Microsoft.AppCenter.Analytics" Version="4.3.0" />
    <PackageReference Include="Microsoft.AppCenter.Crashes" Version="4.3.0" />
    <PackageReference Include="Microsoft.AppCenter.Distribute" Version="4.3.0" />
    <PackageReference Include="Microsoft.AppCenter.Push" Version="3.4.3" />
    <PackageReference Include="modernhttpclient-updated" Version="2.7.2" />
    <PackageReference Include="Plugin.FirebasePushNotification" Version="3.3.10" />
    <PackageReference Include="Plugin.Toast" Version="2.2.0" />
    <PackageReference Include="RedCorners.Forms" Version="63.0.1" />
    <PackageReference Include="Refit" Version="5.2.4" />
    <PackageReference Include="Rg.Plugins.Popup" Version="2.0.0.10" />
    <PackageReference Include="Telerik.UI.for.Xamarin.Common" Version="2020.3.1106.1" />
    <PackageReference Include="Telerik.UI.for.Xamarin.DataControls" Version="2020.3.1106.1" />
    <PackageReference Include="Telerik.UI.for.Xamarin.DataVisualization" Version="2020.3.1106.1" />
    <PackageReference Include="Telerik.UI.for.Xamarin.ImageEditor" Version="2020.3.1106.1" />
    <PackageReference Include="Telerik.UI.for.Xamarin.Input" Version="2020.3.1106.1" />
    <PackageReference Include="Telerik.UI.for.Xamarin.Primitives" Version="2020.3.1106.1" />
    <PackageReference Include="Telerik.UI.for.Xamarin.SkiaSharp" Version="2020.3.1106.1" />
    <PackageReference Include="Xam.Plugin.Media" Version="5.0.1" />
    <PackageReference Include="Xamarin.CommunityToolkit" Version="1.2.0" />
    <PackageReference Include="Xamarin.CommunityToolkit.Markup" Version="1.2.0" />
    <PackageReference Include="Xamarin.FFImageLoading" Version="2.4.11.982" />
    <PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.11.982" />
    <PackageReference Include="Xamarin.FFImageLoading.Transformations" Version="2.4.11.982" />
    <PackageReference Include="Xamarin.Essentials" Version="1.6.1" />  
    <PackageReference Include="Xamarin.Forms.InputKit" Version="3.5.0" />  
    <PackageReference Include="Xamarin.Forms.PancakeView" Version="1.3.6" />  
    <PackageReference Include="Xamarin.Forms.Visual.Material" Version="5.0.0.2012" />  
    <PackageReference Include="Xamarin.Forms" Version="5.0.0.2012" />
    <PackageReference Include="ZXing.Net.Mobile" Version="2.4.1" />
    <PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.4.1" />
JasonSa1993 commented 3 years ago

I have had this error when I want to update my entire project to the new Android X libraries and components. After much testing, this is the combination of packages that helped me, they must literally all be in their latest version

`

5.0.0.2083 2.3.1.1
<PackageReference Include="Xamarin.CommunityToolkit">
  <Version>1.2.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.InputKit">
  <Version>3.7.2</Version>
<PackageReference Include="Xamarin.AndroidX.Browser">
  <Version>1.3.0.6</Version>
</PackageReference>
<PackageReference Include="Xamarin.Google.Android.Material">
  <Version>1.3.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4">
  <Version>1.0.0.8</Version>
</PackageReference>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.AppCompat">
  <Version>1.3.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.6.0.1" />
<PackageReference Include="Xamarin.AndroidX.CustomView" Version="1.1.0.6" />
<PackageReference Include="Xamarin.AndroidX.Preference" Version="1.1.1.9" />
<PackageReference Include="Xamarin.AndroidX.RecyclerView" Version="1.2.1.1" />
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.2.4.1" />
<PackageReference Include="Xamarin.AndroidX.Palette" Version="1.0.0.8" />`

Regards