【发布时间】:2017-10-01 06:18:50
【问题描述】:
这是我最近几天一直面临的非常有趣的场景。我有一个使用 MvvmCross 和少数 3rd 方库(如 RestSharp)的 Xamarin 项目。 几天前,当我得到项目代码并打开它时,我发现项目属性文件夹有超过 1 个清单文件是异常的。当我尝试运行项目时,Visual Studio 没有拾取 android 清单文件。 我在网上搜索了这方面的信息,但几乎没有得到任何线索。
- 每个应用程序的根目录中都必须有一个 AndroidManifest.xml 文件(正是该文件的名称)。
我正在发布我的文件结构图像以供参考。我已经检查了我的 .csproj 文件,它具有以下代码
<AndroidManifest>Properties\TurboViewerarmAndroidManifest.xml</AndroidManifest>
<ItemGroup>
<Content Include="Properties\TurboViewerarmAndroidManifest.xml">
<SubType>Designer</SubType>
</Content>
就我而言,如果我将清单文件名更改为 AndroidManifest.xml 项目运行正常,但是当我尝试将其他清单文件的名称更改为 AndroidManifest.xml 时会出现问题,因为我们不能在单个文件中拥有多个同名文件文件夹。但是对于这个项目,所有清单文件都将在同一个文件夹中,但如果不将其名称更改为 AndroidManifest.xml,项目将无法运行。就像死锁一样。
由于我是 Visual Studio 和 xamarin 的新手,所以我可能会遗漏一些可能会让一切变得清晰的观点。
【问题讨论】:
-
Luke 指出并且您知道,每个项目应该只有一个清单。如果您对其他项目有依赖关系,它们也应该有一个清单,并且在构建时执行一个称为清单合并的过程,该过程将基于规则集合并元素。 developer.android.com/studio/build/manifest-merge.html 在原生安卓中这个过程也是一样的。
-
我会寻找以前可能已经设置的构建脚本,因为这些不同的清单看起来特定于 cpu 架构。也许他们交换了每个架构的清单或为每个 ABI 创建了一个应用程序。
标签: c# android visual-studio xamarin mvvmcross