You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中如何按环境配置使用AndroidManifest.xml变量或不同文件

.NET MAUI AndroidManifest 多环境配置方案

方案1:通过MSBuild条件替换现有Manifest内容

直接在项目的.csproj文件中添加条件逻辑,针对不同构建配置(Dev/QA/Prod)替换AndroidManifest.xml里的特定节点或属性,适合修改少量属性的场景。

示例配置:

<Project Sdk="Microsoft.NET.Sdk">
  <!-- 保留原有项目配置 -->

  <!-- 定义各环境的Manifest属性值 -->
  <PropertyGroup Condition="'$(Configuration)' == 'Dev'">
    <AppLabel>MyApp-Dev</AppLabel>
    <CustomPermission>com.myapp.dev.permission.ACCESS_DATA</CustomPermission>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' == 'QA'">
    <AppLabel>MyApp-QA</AppLabel>
    <CustomPermission>com.myapp.qa.permission.ACCESS_DATA</CustomPermission>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' == 'Prod'">
    <AppLabel>MyApp</AppLabel>
    <CustomPermission>com.myapp.permission.ACCESS_DATA</CustomPermission>
  </PropertyGroup>

  <!-- 构建前执行替换操作 -->
  <Target Name="UpdateAndroidManifest" BeforeTargets="GenerateAndroidManifest">
    <XmlPoke XmlInputPath="Platforms\Android\AndroidManifest.xml"
             Query="/manifest/application/@android:label"
             Value="$(AppLabel)" />
    <XmlPoke XmlInputPath="Platforms\Android\AndroidManifest.xml"
             Query="/manifest/uses-permission[@android:name='com.myapp.permission.ACCESS_DATA']/@android:name"
             Value="$(CustomPermission)" />
  </Target>
</Project>

方案2:使用多版本Manifest文件覆盖

如果各环境Manifest差异较大,可以创建独立的环境专属Manifest文件,通过MSBuild条件指定对应配置下使用的文件。

  1. 在Platforms\Android目录下创建AndroidManifest.Dev.xml、AndroidManifest.QA.xml,内容根据环境需求编写完整的Manifest结构;
  2. 修改.csproj配置:
<Project Sdk="Microsoft.NET.Sdk">
  <!-- 保留原有项目配置 -->

  <ItemGroup Condition="'$(Configuration)' == 'Dev'">
    <AndroidManifest Include="Platforms\Android\AndroidManifest.Dev.xml" />
    <None Remove="Platforms\Android\AndroidManifest.xml" />
  </ItemGroup>

  <ItemGroup Condition="'$(Configuration)' == 'QA'">
    <AndroidManifest Include="Platforms\Android\AndroidManifest.QA.xml" />
    <None Remove="Platforms\Android\AndroidManifest.xml" />
  </ItemGroup>

  <ItemGroup Condition="'$(Configuration)' == 'Prod'">
    <AndroidManifest Include="Platforms\Android\AndroidManifest.xml" />
    <None Remove="Platforms\Android\AndroidManifest.Dev.xml" />
    <None Remove="Platforms\Android\AndroidManifest.QA.xml" />
  </ItemGroup>
</Project>

方案3:利用Android Manifest占位符

MAUI支持在AndroidManifest.xml中使用自定义占位符,再通过.csproj的环境配置赋值,是最灵活的通用方案。

  1. 在AndroidManifest.xml中嵌入占位符:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <application android:label="$(_AppLabel)" 
               android:icon="@mipmap/appicon">
    <!-- 其他组件配置 -->
  </application>
  <uses-permission android:name="$(_CustomPermission)" />
</manifest>
  1. 在.csproj中针对各配置赋值:
<Project Sdk="Microsoft.NET.Sdk">
  <!-- 保留原有项目配置 -->

  <PropertyGroup Condition="'$(Configuration)' == 'Dev'">
    <_AppLabel>MyApp-Dev</_AppLabel>
    <_CustomPermission>com.myapp.dev.permission.ACCESS_DATA</_CustomPermission>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' == 'QA'">
    <_AppLabel>MyApp-QA</_AppLabel>
    <_CustomPermission>com.myapp.qa.permission.ACCESS_DATA</_CustomPermission>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)' == 'Prod'">
    <_AppLabel>MyApp</_AppLabel>
    <_CustomPermission>com.myapp.permission.ACCESS_DATA</_CustomPermission>
  </PropertyGroup>
</Project>

内容的提问来源于stack exchange,提问作者hercul1017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:33:27