品牌特定的`AndroidManifest.xml`未合并到.NET MAUI项目中

问题描述 投票:0回答:1

我正在开发一个个人项目,我需要为不同品牌的应用程序使用不同的

AndroidManifest.xml
文件。每个品牌都有自己的清单文件,位于单独的目录中。但是,尽管将
.csproj
配置为包含活动品牌的正确
AndroidManifest.xml
,但构建过程仅包括基础
AndroidManifest.xml
,并且不会合并特定于品牌的清单。

项目设置:

  • 基础清单位置:
    Platforms/Android/AndroidManifest.xml
  • 品牌特定清单位置:
    Stuff/Brand1/Android/AndroidManifest.xml
  • 开发环境:Visual Studio 2022、.NET MAUI

我尝试过的:

  1. 修改

    .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
    中确实有效,因为我将它们用于其他特定于品牌的设置。

  2. 清理和重建:我已多次执行清理构建,但特定于品牌的清单仍未被合并。

  3. 检查合并清单:构建后,我检查了

    obj/Debug/android/manifest/AndroidManifest.xml
    ,它只包含基本清单。

  4. 构建输出日志:我查看了构建日志,但没有看到任何与清单合并过程相关的明显错误或警告。

问题:

尽管做出了这些努力,但特定于品牌的

AndroidManifest.xml
在构建过程中并未被拾取或合并。因此,最终版本中缺少特定于该品牌的第 3 方配置。

问题:

  1. 如何确保在构建过程中正确包含和合并特定于品牌的
    AndroidManifest.xml
  2. 我在
    .csproj
    配置中是否缺少某些内容可能会导致此问题?
  3. 我需要配置 .NET MAUI 中的任何其他步骤或设置来支持特定于品牌的清单吗?

任何见解或建议将不胜感激!

提前感谢您的帮助。

奖金
也很高兴知道:

<meta-data
    android:value="${ApplicationId}.MYCLASS"/>

AndroidManifest.xml
内的有效语法。

android xml maui android-manifest branding
1个回答
0
投票
  1. 照此添加 Android 清单。

enter image description here

  1. Platforms\Android\AndroidManifest.xml 中没有清单

  2. 更新 .csproj 文件以设置所选构建配置的清单

    平台\Android\Public\AndroidManifest.xml 平台\Android\Enterprise\AndroidManifest.xml
© www.soinside.com 2019 - 2024. All rights reserved.