关于我的环境的信息
编译10)
H 113SDK构建工具版本: 31.0.0 rc5
H 218
Xamarin.Forms.Visual.Material: 5.0.0.2012
Xamarin.Google.Android.Material: 1.2.1.1
附加信息
使用Xamarin.Android.Support.Design
Cleaned库的
多次使用
没有对AndroidX解决方案的引用,多次使用AndroidX All bin和obj文件夹,并多次重置Visual几次
目标框架: 10.0 (Q)
问题:I能够构建并部署到我的设备上,但是当应用程序运行并加载登录页面时,在InitializeComponent()调用期间,将引发以下异常:
错误:父类VTable初始化失败,原因是: AndroidX.SwipeRefreshLayout.Widget.SwipeRefreshLayout失败assembly:/data/data/com.app.dev/files/.override/Xamarin.AndroidX.SwipeRefreshLayout.dll类型的vtable安装程序:SwipeRefreshLayout成员:(Null) at (包装托管到本地) System.RuntimeTypeHandle.type_is_assignable_from(System.Type,System.Type) at System.RuntimeTypeHandle.CanCastTo (System.RuntimeType类型)( /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System/RuntimeTypeHandle.cs:265 at System.RuntimeType.IsAssignableFrom (System.Type c) 0x00020 in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/rttype.cs:3809 at Xamarin.Forms.VisualTypeConverter.Register (System.Reflection.Assembly assembly,System.Collections.Generic.Dictionary`2TKey,( D:\a\1\s\Xamarin.Forms.Core\Visuals\VisualTypeConverter.cs:64中的TValue映射) 0x00019在Xamarin.Forms.VisualTypeConverter.InitMappings () 0x0001a中D:\a\1\s\Xamarin.Forms.Core\Visuals\VisualTypeConverter.cs:22在Xamarin.Forms.VisualTypeConverter.ConvertFromInvariantString (System.String值) 0x00007在D:\a\1\s\Xamarin.Forms.Core\Visuals\VisualTypeConverter.cs:119中
下面是正在加载的页面中的xaml:
<ContentPage x:Class="SignInPage"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:effects="clr-namespace:XF.Core.Effects;assembly=XF.Core"
x:Name="SignInPage"
IsBusy="{Binding IsBusy, Mode=OneWay}"
Visual="Material"
mc:Ignorable="d">
<ContentPage.Content>
<StackLayout
x:Name="ContentStackLayout"
Margin="0"
Padding="0"
AutomationId="ContentStackLayout"
BackgroundColor="White"
HorizontalOptions="FillAndExpand"
Orientation="Vertical"
VerticalOptions="FillAndExpand">
<Grid
x:Name="MainContentGrid"
Margin="0,0,0,0"
AutomationId="MainContentGrid"
ColumnSpacing="0"
HorizontalOptions="FillAndExpand"
RowSpacing="0"
VerticalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition>
<RowDefinition.Height>
<OnIdiom
x:TypeArguments="GridLength"
Phone="50"
Tablet="60" />
</RowDefinition.Height>
</RowDefinition>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="8" />
</Grid.ColumnDefinitions>
<Image
x:Name="HeaderGradientImage"
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="6"
Aspect="Fill"
AutomationId="HeaderGradientImage"
HorizontalOptions="Fill"
Source="{Binding HeaderGradientBackgroundImageUrl}"
VerticalOptions="Fill" />
<Label
x:Name="TitleLabel"
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="6"
AutomationId="TitleLabel"
Style="{Binding HeaderTitleWhiteLabelStyle}"
Text="{Binding Title}" />
<Image
x:Name="LogoImage"
Grid.Row="0"
Grid.Column="4"
Aspect="AspectFit"
AutomationId="LogoImage"
HorizontalOptions="End"
Source="{Binding LogoIconUrl}"
VerticalOptions="Center">
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding AppLogoTappedCommand}" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
<StackLayout
x:Name="SignInStackLayout"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="6"
AutomationId="SignInStackLayout"
HorizontalOptions="FillAndExpand"
Orientation="Vertical">
<StackLayout.VerticalOptions>
<OnIdiom
x:TypeArguments="LayoutOptions"
Phone="CenterAndExpand"
Tablet="StartAndExpand" />
</StackLayout.VerticalOptions>
<StackLayout.Margin>
<OnIdiom
x:TypeArguments="Thickness"
Phone="15,0,15,0"
Tablet="50,75,50,0" />
</StackLayout.Margin>
<Label
x:Name="PleaseLogInLabel"
Margin="0,7,0,0"
AutomationId="PleaseLogInLabel"
FontSize="Large"
HorizontalOptions="Start"
Text="Please Log In"
TextColor="#002D72"
VerticalOptions="Center" />
<Label
x:Name="UserIdLabel"
Margin="0,15,0,0"
AutomationId="UserIdLabel"
FontSize="Small"
Text="USER ID"
TextColor="#002D72"
VerticalOptions="Center">
<Label.WidthRequest>
<OnIdiom
x:TypeArguments="x:Double"
Phone="200"
Tablet="320" />
</Label.WidthRequest>
</Label>
<Frame
x:Name="UserIdFrame"
Margin="0,0,0,0"
AutomationId="UserIdFrame"
BackgroundColor="White"
BorderColor="#002D72"
Padding="0,0,0,0">
<Entry
x:Name="UserIdEntry"
Margin="0,0,0,0"
AutomationId="UserIdEntry"
BackgroundColor="White"
FontSize="Medium"
Keyboard="Text"
Placeholder="User"
PlaceholderColor="#BBBBBB"
Text="{Binding UserId, Mode=TwoWay}"
TextChanged="UserIdEntry_TextChanged"
TextColor="#002D72"
VerticalOptions="Center"
Visual="Material">
<Entry.WidthRequest>
<OnIdiom
x:TypeArguments="x:Double"
Phone="200"
Tablet="320" />
</Entry.WidthRequest>
<Entry.Effects>
<effects:CgEntryCapitalizeKeyboardEffect />
</Entry.Effects>
</Entry>
</Frame>
<Label
x:Name="PasswordLabel"
Margin="0,5,0,0"
AutomationId="PasswordLabel"
FontSize="Small"
Text="Password"
TextColor="#002D72"
VerticalOptions="Center">
<Label.WidthRequest>
<OnIdiom
x:TypeArguments="x:Double"
Phone="200"
Tablet="320" />
</Label.WidthRequest>
</Label>
<Frame
x:Name="PasswordFrame"
Margin="0,0,0,0"
AutomationId="PasswordFrame"
BackgroundColor="White"
BorderColor="#002D72"
Padding="0,0,0,0">
<Entry
x:Name="PasswordEntry"
Margin="0,0,0,0"
AutomationId="PasswordEntry"
BackgroundColor="White"
FontSize="Medium"
IsPassword="true"
Keyboard="Text"
Placeholder="Desktop Password"
PlaceholderColor="#BBBBBB"
Text="{Binding Password, Mode=TwoWay}"
TextChanged="PasswordEntry_TextChanged"
TextColor="#002D72"
VerticalOptions="Center">
<Entry.WidthRequest>
<OnIdiom
x:TypeArguments="x:Double"
Phone="200"
Tablet="320" />
</Entry.WidthRequest>
</Entry>
</Frame>
<Label
x:Name="DomainLabel"
Margin="0,5,0,0"
AutomationId="DomainLabel"
FontSize="Small"
Text="Domain"
TextColor="#002D72"
VerticalOptions="Center">
<Label.WidthRequest>
<OnIdiom
x:TypeArguments="x:Double"
Phone="200"
Tablet="320" />
</Label.WidthRequest>
</Label>
<Frame
x:Name="NetworkDomainPickerFrame"
Margin="0,0,0,0"
AutomationId="NetworkDomainPickerFrame"
BackgroundColor="White"
BorderColor="#002D72"
Padding="0,0,0,0">
<Picker
x:Name="NetworkDomainPicker"
Margin="0,0,0,0"
AutomationId="NetworkDomainPicker"
BackgroundColor="White"
Title="Select Network Domain"
FontSize="Medium"
ItemDisplayBinding="{Binding Name}"
ItemsSource="{Binding NetworkDomainList}"
TitleColor="#BBBBBB"
SelectedIndexChanged="NetworkDomainPicker_SelectedIndexChanged"
SelectedItem="{Binding SelectedNetworkDomain, Mode=TwoWay}"
TextColor="#002D72"
VerticalOptions="Center">
<Picker.WidthRequest>
<OnIdiom
x:TypeArguments="x:Double"
Phone="200"
Tablet="320" />
</Picker.WidthRequest>
</Picker>
</Frame>
<Button
x:Name="SignInButton"
Margin="0,15,0,0"
AutomationId="SignInButton"
BackgroundColor="#056DAE"
Command="{Binding SignInCommand}"
FontSize="Medium"
IsEnabled="{Binding IsFormEntryValid}"
Text="Log In"
TextColor="White">
<Button.HeightRequest>
<OnIdiom
x:TypeArguments="x:Double"
Phone="40"
Tablet="50" />
</Button.HeightRequest>
</Button>
<BoxView
x:Name="ViewHeaderSeparatorBoxView"
Margin="0,15,0,15"
AutomationId="ViewHeaderSeparatorBoxView"
BackgroundColor="#CCCCCC"
HeightRequest="2"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand" />
<ScrollView x:Name="DisclaimerScrollView" AutomationId="DisclaimerScrollView">
<StackLayout Orientation="Vertical">
<Label
x:Name="DisclaimerLabel"
Margin="0,0,0,0"
AutomationId="DisclaimerLabel"
FontSize="Small"
HorizontalOptions="StartAndExpand"
Text="{Binding SignInDisclaimerText}"
TextColor="#53565A"
VerticalOptions="StartAndExpand" />
<Label
x:Name="DisclaimerLabel"
Margin="0,20,0,0"
AutomationId="DisclaimerLabel"
FontSize="Micro"
HorizontalOptions="CenterAndExpand"
LineBreakMode="WordWrap"
Text="{Binding SignInDisclaimerText}"
TextColor="#53565A"
VerticalOptions="EndAndExpand" />
</StackLayout>
</ScrollView>
</StackLayout>
</Grid>
</StackLayout>
</ContentPage.Content>
</ContentPage>
发布于 2021-07-16 06:57:04
https://github.com/xamarin/Xamarin.Forms/issues/14424
安装Xamarin.AndroidX.AppCompat.AppCompatResources (1.3.0版)
和降级
从1.6.0到1.5.0版本的Xamarin.AndroidX.Core
帮我解决了这个问题。
发布于 2021-08-20 03:42:22
上述答案是正确的,但不完整。当将Xamarin.AndroidX.Core从1.6.0降级到1.5.0时,会导致不兼容问题。为了解决这个问题,下面是我对其他软件包的降级。
发布于 2021-11-30 21:30:45
在我们的安卓项目中安装Xamarin.AndroidX.SwipeRefreshLayout为我们工作,同时维护Xamarin.AndroidX.Core 1.6.0.1。
有关更多信息,请参见此处的GitHub线程:https://github.com/xamarin/Xamarin.Forms/issues/14424。
https://stackoverflow.com/questions/68396079
复制相似问题