我正在开发一个个人项目,我需要为不同品牌的应用程序使用不同的
AndroidManifest.xml
文件。每个品牌都有自己的清单文件,位于单独的目录中。但是,尽管将 .csproj
配置为包含活动品牌的正确 AndroidManifest.xml
,但构建过程仅包括基础 AndroidManifest.xml
,并且不会合并特定于品牌的清单。
Platforms/Android/AndroidManifest.xml
Stuff/Brand1/Android/AndroidManifest.xml
修改
.csproj
文件的几种变体:
<ItemGroup>
<None Remove="Platforms/Android/AndroidManifest.xml" />
<AndroidManifest Include="Stuff/Brand1/Android/AndroidManifest.xml">
<LogicalName>Platforms/Android/AndroidManifest.xml</LogicalName>
</AndroidManifest>
</ItemGroup>
或
<ItemGroup Condition="$(cfg.Contains('-Brand1'))">
<None Remove="Platforms/Android/AndroidManifest.xml" />
<AndroidManifest Include="Stuff/Brand1/Android/AndroidManifest.xml">
<LogicalName>Platforms/Android/AndroidManifest.xml</LogicalName>
</AndroidManifest>
</ItemGroup>
条件在
.csproj
中确实有效,因为我将它们用于其他特定于品牌的设置。
清理和重建:我已多次执行清理构建,但特定于品牌的清单仍未被合并。
检查合并清单:构建后,我检查了
obj/Debug/android/manifest/AndroidManifest.xml
,它只包含基本清单。
构建输出日志:我查看了构建日志,但没有看到任何与清单合并过程相关的明显错误或警告。
尽管做出了这些努力,但特定于品牌的
AndroidManifest.xml
在构建过程中并未被拾取或合并。因此,最终版本中缺少特定于该品牌的第 3 方配置。
AndroidManifest.xml
?.csproj
配置中是否缺少某些内容可能会导致此问题?任何见解或建议将不胜感激!
提前感谢您的帮助。
奖金
也很高兴知道:
<meta-data
android:value="${ApplicationId}.MYCLASS"/>
是
AndroidManifest.xml
内的有效语法。