Xamarin 当选择“链接SDK程序集”时,Android TextView不会引发更改事件

Xamarin 当选择“链接SDK程序集”时,Android TextView不会引发更改事件,xamarin,xamarin.android,linker,mvvmcross,Xamarin,Xamarin.android,Linker,Mvvmcross,我正在使用MvvmCross在Xamarin进行一个项目,试图使用链接器来降低应用程序的大小,以便在Android和iOS no Forms上发布 在Android上,当我选择仅链接SDK程序集时,项目构建和运行时不会出现崩溃或错误消息。但是,当EditText控件的文本发生更改时,它们的数据绑定不会得到更新,并且它们更改的事件处理程序不会被调用,这些控件都不会正确响应 当我选择“不链接”时,一切正常。更新绑定并调用事件处理程序 我已经看过了,并且知道如何确保各种程序集、类型和方法被保留。我的问

我正在使用MvvmCross在Xamarin进行一个项目,试图使用链接器来降低应用程序的大小,以便在Android和iOS no Forms上发布

在Android上,当我选择仅链接SDK程序集时,项目构建和运行时不会出现崩溃或错误消息。但是,当EditText控件的文本发生更改时,它们的数据绑定不会得到更新,并且它们更改的事件处理程序不会被调用,这些控件都不会正确响应

当我选择“不链接”时,一切正常。更新绑定并调用事件处理程序

我已经看过了,并且知道如何确保各种程序集、类型和方法被保留。我的问题是我根本不知道需要保存什么,也不知道如何找到。我尝试过像这样的工具,但没有成功


有人能帮我找出需要保留的内容吗?

如果LinkerPleaseInclude文件缺少对EditText的引用,通常会出现这种行为。原因是链接器会删除应用程序中未引用/使用的所有内容。在LinkerPleaseInclude文件中有引用时,链接器将注意到使用情况并保留事件处理程序。

如果LinkerPleaseInclude文件缺少对EditText的引用,则通常会出现这种行为。原因是链接器会删除应用程序中未引用/使用的所有内容。通过LinkerPleaseInclude文件中的引用,链接器将注意使用情况并保留事件处理程序。

将LinkerPleaseInclude.cs文件添加到Android项目中,其中包含以下代码:

public class LinkerPleaseInclude
{
    public void Include(TextView text)
    {
        text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text;
        text.Hint = "" + text.Hint;
    }
}

EditText是从TextView继承的,因此这将通过使链接器认为您引用了TextView.AfterTextChanged事件来解决您的问题。您可以找到一个参考Android LinkerPleaseInclude.cs文件。

将LinkerPleaseInclude.cs文件添加到您的Android项目中,其中包含以下代码:

public class LinkerPleaseInclude
{
    public void Include(TextView text)
    {
        text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text;
        text.Hint = "" + text.Hint;
    }
}

EditText是从TextView继承的,因此这将通过使链接器认为您引用了TextView.AfterTextChanged事件来解决您的问题。您可以找到一个参考Android LinkerPleaseInclude.cs文件。

Droid项目中是否有名为LinkerPleaseInclude的文件?Droid项目中是否有名为LinkerPleaseInclude的文件?