Android Studio:为每个变体提供自己的图标
在Android Studio中,我希望我的每个应用程序变体都有自己的图标 我尝试了各种方法,包括这里的建议 但它不起作用 以下是我在build.graddle文件中写的内容: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
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文件夹
<?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"
]