我正在使用MvvmCross在Xamarin的一个项目上工作,尝试使用链接器来降低Android和iOS上的应用程序大小(没有表单。)
在Android上,当我选择"仅限链接SDK程序集"时,项目构建并运行时不会出现崩溃或错误消息。但是,EditText
控件在文本更改时没有正确响应,数据绑定不会更新,并且他们的Changed
事件处理程序也不会被调用。
当我选择" Don&#tt Link"时,一切正常。更新绑定并调用事件处理程序。
我查看了Xamarin Linker documentation,并且我知道如何确保保留各种程序集,类型和方法。我的问题是我根本不知道需要保留什么,也不知道如何找出答案。我尝试过像bitdiffer这样的工具但没有成功。
任何人都可以帮我弄明白我需要保留什么吗?
答案 0 :(得分:1)
如果LinkerPleaseInclude文件缺少对EditText的引用,则通常会出现此行为。原因是链接器剥离了应用程序中未引用/使用的所有内容。通过LinkerPleaseInclude文件中的引用,链接器将注意到用法并保留事件处理程序。
答案 1 :(得分:1)
将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文件here。