XML 和 Xamarin.Android 应用程序中的 AXML 有什么区别?

What is the difference between XML and AXML in Xamarin.Android Apps?

自 VS2019 以来,我注意到每个新项目都有常规的 XML 作为其资源,例如本机 Android Studio 应用程序,但之前(2015 年或 2017 年)它创建了 一个XML个文件。

在内部,文件看起来完全一样,但最近我在 VS2019 的每个新版本(Windows 或 Mac)中的 Xamarin.Android 中遇到了新错误,例如:

也许,我应该使用 AXML 个文件,因为 uncommon comment 昨天来了:

The linker removes classes that are needed and apparently doesn't parse the axml to see that they are in fact needed

这种情况让我想知道它们之间是否有任何具体区别,因为当我 运行 我的应用程序运行良好,但它不适用于 Release 或某些配置比如链接所有程序集

重要提示:

正如我的问题标题所说:我想知道这两个扩展名之间的区别,因为出于任何原因,扩展名在没有任何通知的情况下发生了变化。 以前的情况只提出我对这种情况很好奇,他们没有必要联系起来。

首先,链接器不会对您的布局文件执行任何操作。所以 .axml 或 .xml,它不会接触或解析它。链接器仅与布局文件代表的 类 一起工作,而不是布局文件本身。

现在,关于“.axml”与“.xml”,我相信“.axml”扩展只是 MonoDroid 的遗留物。该特定扩展的唯一目标可能是从常规 xml 文件中识别 android 布局文件,没有任何高级逻辑(这只是一个假设)。

长话短说,如果您在项目中遇到有关链接器的问题,它可能与布局文件的扩展名选择无关。您应该保留 Visual Studio 定义的任何默认值。

首先,Link所有程序集都容易崩溃,虽然这些崩溃可以通过一定程度的努力和知识来修复,但正是因为它造成的麻烦多于它所带来的帮助,所以不推荐这样做Xamarin 的选项。所以那些不是 'bugs',那些崩溃是预期的行为。

其次,您链接的 github 上的评论并未表明 axml 文件存在任何问题。它说您的 axml 文件需要存在一些库,并且它不能由删除它并导致崩溃的编译器确定。

基本与你标题中的问题无关

.axml 只不过是用于呈现 Android Layout Files 即 Android 风格的扩展 hack .xml 文件 Visual Studio。它的字面意思是 .axml (Android XML).

我们以前缺乏基础设施来解释来自所有不同类型工作负载的 .xml 文件的风味版本。然而,在 16.2 和 8.2 中(Visual Studio 和 Visual Studio for mac),您可以在您的应用程序中无缝使用 .xml,并提供布局编辑器、丰富的智能感知等.

如果您不需要布局编辑器,您可以使用 .xml 自 MonoDroid 的第一个版本以来,因为 .axml 的处理方式与 .xml 相同在一天结束时。