Android Studio :为每个变体指定自己的图标

qqrboqgw  于 2022-12-19  发布在  Android
关注(0)|答案(1)|浏览(156)

在Android Studio中,我希望每个应用变体都有自己的图标。
我尝试了各种方法,包括这里建议的How to provide different Android app icons for different gradle buildTypes?,但没有效果
下面是我在build.graddle文件中所写的内容:

flavorDimensions "marketplaceA"

    productFlavors {
        koanFlavor {
            dimension "marketplaceA"
            resValue "string", "app_name", "Koan"
            manifestPlaceholders = [
                    appIcon: "@mipmap/ic_launcher"
            ]
            minSdkVersion 20
            targetSdkVersion 27
            versionCode 3
            versionName '1.1'
        }
        koanSEFlavor {
            dimension "marketplaceA"
            resValue "string", "app_name", "Koan SE"
            manifestPlaceholders = [
                    appIcon: "@mipmap/ic_launcher"
            ]
            minSdkVersion 20
            targetSdkVersion 27
            versionCode 3
            versionName '1.1'
        }
        }

而且,由于我在每个变体中都共享相同的res:

  • 我没有为每个变体创建res文件夹
  • 我用2个版本的xml和png文件填充了主res文件夹的mipmapXXX文件夹

但当我在模拟器中运行应用程序时,图标不显示(奇怪的是,它只显示在我的盾牌K1平板电脑上,我尝试过的每一个其他智能手机都不显示图标)

更新日期:

我只是尝试添加mipmapXXX文件夹到每个变体的文件夹,保持每个资源完全相同的名称,只改变png的内容,但仍然...
这个问题可能与我的launchar.xml文件的内容有关吗?

<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/ic_launcher_background" />
    <foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

在Android studio中,当您打开ic_launcher. xml文件时,您会在预览选项卡中看到该图标。

更新二:

问题是我去的解决方案,我把这个在build.gradle为每个变体

manifestPlaceholders = [
            appIcon: "@mipmap/ic_launcher"
    ]

然后将两个ic_launcher文件放在默认文件夹中。我必须在清单中添加

android:icon="${appIcon}"

我认为这是一个糟糕的解决方案:(
我现在尝试使用@W0rmH0le解决方案,但有些地方不对
我如何摆脱自适应图标,以有利于我的简单图标?

最终更新:

来自@W0rmH0le和@Derek的建议确实帮了大忙,但以下信息可能对我解决问题有很大帮助:

  1. AS中的New -〉Image Asset UI是唯一的方法,您可以一次又一次地使用它,尝试找到您想要的图标
    1.完成图像资产UI后,执行“构建-〉清理项目”和“构建-〉重建项目”
    1.在这个阶段,你最好使用adaptive-icon,因为如果你不这样做,你的应用程序将运行的系统可能会把你的图标变成难看的东西
    1.因为你使用的是自适应图标,所以不要尝试使用透明的背景。图像资源UI会很好地显示它,但是自适应图标背景不支持透明
    1.最后,为了得到两个版本的图标,我在常规过程中添加了一个图标,然后我去资源管理器将mipmapXXX文件夹复制到一个安全的地方。然后我以常规方式添加了另一个图标。为了完成它,我将保存的mipmap文件夹粘贴到variante文件夹树中,如@W0rmH0le所述
clj7thdc

clj7thdc1#

最简单的方法是为每种风格创建一个新的资源文件夹。
例如:

\src
  | 
  | -- \main
  |      |
  |      | --- \res -> Here, you place all default and common icons
  |
  | -- \koanFlavor
  |      |
  |      | --- \res -> Add only the icons that are different from default one
  | 
  | -- \koanSEFlavor 
  |      |
  |      | --- \res -> If you have one icon that are different from main and koanFlavor, you can place here

观察结果:这些图标是不同的,但它们应该共享相同的名称。
你不需要为每种风格创建一个文件夹...即使你有两种风格,你也不需要创建两个额外的文件夹(koanFlavorkoanSEFlavor)。你可以把一种风格的所有图标放在主文件夹中。这样,你只需要创建一个额外的文件夹来支持另一种风格。
您也不需要复制所有图标。在风味文件夹中,您应该只添加那些与主文件夹不同的图标。

    • 编辑**

您的图标通过gradle定义,网址为:

manifestPlaceholders = [
        appIcon: "@mipmap/ic_launcher"
]

这是ic_laucher是将用作启动器图标的图标。因此,ic_launcher.png是您应该移动到特定文件夹的图标

相关问题