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

.NET MAUI(.NET 8) Android端按Release/Debug配置切换应用图标

.NET MAUI根据构建配置动态切换Android图标解决方案

首先澄清一个关键点:你当前的.csproj配置其实已经能实现需求——构建时MSBuild会根据Debug/Release配置生成对应版本的图标资源,覆盖到输出目录的mipmap文件夹中,资源名仍为appicon和appicon_round,所以AndroidManifest里的@mipmap/appicon会自动加载对应版本的图标。如果测试时没看到变化,试试:

  • 右键项目选择「清理」
  • 删除项目根目录下的bin和obj文件夹
  • 重新构建对应配置的版本

如果确实需要让AndroidManifest中的图标引用动态区分(比如Debug和Release用不同的资源名),可以用以下两种方法:

方法1:通过MSBuild动态修改AndroidManifest属性

在你的.csproj文件中添加以下MSBuild目标,在生成AndroidManifest前根据配置设置图标属性:

<Target Name="SetAndroidIconsByConfiguration" BeforeTargets="GenerateAndroidManifest">
  <PropertyGroup Condition="'$(Configuration)' == 'DEBUG'">
    <AndroidIcon>@mipmap/appicon</AndroidIcon>
    <AndroidRoundIcon>@mipmap/appicon_round</AndroidRoundIcon>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'RELEASE'">
    <AndroidIcon>@mipmap/appicon_black</AndroidIcon>
    <AndroidRoundIcon>@mipmap/appicon_black_round</AndroidRoundIcon>
  </PropertyGroup>
</Target>

同时修改MauiIcon配置,给不同版本指定对应的资源名:

<!-- App Icon -->
<MauiIcon Condition="'$(Configuration)' == 'RELEASE'" Include="Resources\AppIcon\appiconblack.svg" 
          ForegroundScale="0.65" Generate="True" ResourceName="appicon_black" />

<MauiIcon Condition="'$(Configuration)' == 'DEBUG'" Include="Resources\AppIcon\appicon.svg" 
          ForegroundScale="0.65" Generate="True" ResourceName="appicon" />

构建时MSBuild会自动替换AndroidManifest中的图标引用。

方法2:使用不同配置的AndroidManifest文件

  1. 在项目的Platforms/Android目录下,创建两个文件:
    • AndroidManifest.Debug.xml
    • AndroidManifest.Release.xml
  2. 复制原AndroidManifest内容到这两个文件,根据配置修改图标引用:
    Debug版(AndroidManifest.Debug.xml):
    <application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true">
    </application>
    
    Release版(AndroidManifest.Release.xml):
    <application android:allowBackup="true" android:icon="@mipmap/appicon_black" android:roundIcon="@mipmap/appicon_black_round" android:supportsRtl="true">
    </application>
    
  3. 在csproj文件中替换原AndroidManifest引用,改为根据配置加载对应文件:
    <AndroidManifest Include="Platforms\Android\AndroidManifest.Debug.xml" Condition="'$(Configuration)' == 'DEBUG'" />
    <AndroidManifest Include="Platforms\Android\AndroidManifest.Release.xml" Condition="'$(Configuration)' == 'RELEASE'" />
    
  4. 同样要给MauiIcon配置对应的ResourceName,确保资源名和AndroidManifest中的引用一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:40:17