在不使用AndroidManifest.xml属性的情况下使用Xamarin Android

时间:2017-02-27 23:07:42

标签: android android-intent xamarin xamarin.android

我在Xamarin Android中创建应用。它具有自定义URI方案和通用链接支持,并且使用的特定URI方案和通用链接域是不同的,具体取决于我是否构建生产应用程序或用于QA目的的应用程序的测试版本。这些设置最终作为意图过滤器在AndroidManifest.xml文件中结束。

Xamarin's documentation表示在开发Xamarin Android应用时,可以/应该使用自定义属性来指定Activity类上的intent过滤器。然后,Xamarin构建过程在构建时将这些转换为相关的XML部分,并将它们注入AndroidManifest.xml文件。

这很有用,但是当我使用自动构建过程在构建时交换这些intent过滤器的某些属性时,这有点限制。理想情况下,我想自己手动控制AndroidManifest.xml文件的这些部分,因此我可以让我的构建脚本更新相关部分并直接添加/删除/更改意图过滤器部分。

我的问题是这是否可行和/或是否受到支持。我可以简单地省略IntentFilterAttribute类的Activity声明并安全地在XML文件中设置它们吗?或者,Xamarin是否要求我使用其过滤器属性,并且出于某种原因避免出现问题?

1 个答案:

答案 0 :(得分:1)

具有讽刺意味的是,我今天早上提出了一项关于高级清单合并的增强功能:https://bugzilla.xamarin.com/show_bug.cgi?id=52857

在XML文件和[Attribute]中执行此操作的一个问题是,在构建时(EX:您的<activity>元素)之前不会生成其中一些项目。因此,更优选的是将其作为属性进行,以便在生成该元素时,它还知道要在其中放置哪些intent过滤器。

如果你有一个构建过程找到正确的<activity>节点并在下面插入子节点,它可以正常工作,但它在Xamarin.Android构建系统中非常“容易出错”。

因此,虽然不需要属性,但出于安全原因,建议使用它们。这些属性会阻止您通过手动AndroidManifest.xml修改来拍摄自己的脚。