Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio:为每个变体提供自己的图标_Android_Android Studio_Icons_Android Variants - Fatal编程技术网

Android Studio:为每个变体提供自己的图标

Android Studio:为每个变体提供自己的图标,android,android-studio,icons,android-variants,Android,Android Studio,Icons,Android Variants,在Android Studio中,我希望我的每个应用程序变体都有自己的图标 我尝试了各种方法,包括这里的建议 但它不起作用 以下是我在build.graddle文件中写的内容: flavorDimensions "marketplaceA" productFlavors { koanFlavor { dimension "marketplaceA" resValue "string", "app_name", "Koan

在Android Studio中,我希望我的每个应用程序变体都有自己的图标

我尝试了各种方法,包括这里的建议 但它不起作用

以下是我在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文件夹

  • 我用两个版本的xml和png文件填充了主res文件夹的mipmapXXX文件夹

但当我在模拟器中运行应用程序时,图标不会显示 (奇怪的是,它只在我的shield K1平板电脑上显示,我试过的每一个smatphone都没有显示图标)

更新:

我只是尝试将mipmappxxx文件夹添加到每个变体文件夹中,在每个资源上保持完全相同的名称,只更改png的内容,但仍然

我的问题可能来自我的launcher.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>
然后将2个ic_启动器文件放在默认文件夹中。 我得把舱单加进去

 android:icon="${appIcon}"
我认为这是一个糟糕的解决方案:(

我现在尝试使用@W0rmH0le解决方案,但有些地方不对劲

如何摆脱自适应图标而代之以简单图标

最终更新:

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

1) AS中的New->Image Asset UI是唯一的选择,您可以反复使用它,并尝试获得所需的图标

2) 完成图像资产UI后,执行“构建->清理项目”和“构建->重建项目”

3) 在这个阶段,你最好使用自适应图标,因为如果你不这样做,你的应用程序运行的系统可能会把你的图标变成丑陋的东西

4) 因为您使用的是自适应图标,所以不要尝试使用具有透明度的背景。图像资源UI将很好地显示它,但在自适应图标背景中不支持透明度

5) 最后,为了获得2个版本的图标,我在常规过程中添加了一个图标,并转到资源管理器将mipmapXXX文件夹复制到一个安全的地方。
然后我以常规方式添加了另一个图标。为了完成它,我将保存的mipmap文件夹粘贴到variante文件夹树中,正如@W0rmH0le所提到的那样。实现这一点最简单的方法是为每种口味创建一个新的资源文件夹

例如:

\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
观察:这些图标是不同的,但它们应该共享相同的名称

您不需要为每种口味创建一个文件夹。。。即使您有两种口味,也不需要创建另外两个文件夹(
koanFlavor
koansefolavor
)。您可以在主文件夹中放置一种风格的所有图标。这样,您只需要创建一个额外的文件夹来支持另一种风格

您也不需要复制所有图标。。在flavor文件夹中,您应该只添加与主文件夹不同的图标

编辑

您的图标通过gradle在以下位置定义:

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

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

我知道您不需要为所有绘图或样式创建单独的res文件夹。创建文件夹并只放置那些与您的口味不同的绘图。所有其他资源都将从默认文件夹中共享。我从主res文件夹中删除上述资源是否重要?否。Flavor folder drawable将覆盖该文件夹。现在开始尝试:)我的项目正在变得更干净,但仍然无法工作(这是一个搁置了很长时间的项目)在我的清单中我有android:icon=“${appIcon}”知道在哪里可以找到变量的值吗?这个${appIcon}是在gradle中通过manifestPlaceholders=[appIcon:@mipmap/ic_launcher]定义的。
manifestPlaceholders = [
        appIcon: "@mipmap/ic_launcher"
]