在 Android Studio 中,我希望我的每个应用变体都有自己的图标。
我尝试了各种方法,包括这里的建议 如何为不同的 gradle buildTypes 提供不同的 Android 应用程序图标? 但它不起作用
这是我在 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 文件夹
我用 xml 和 png 文件的 2 个版本填充了主 res 文件夹的 mipmapXXX 文件夹
但是当我在模拟器中运行应用程序时,图标没有显示(奇怪的是它只显示在我的 shield K1 平板电脑上,我试过的所有其他智能手机都没有显示图标)
更新:
我只是尝试将 mipmapXXX 文件夹添加到每个变体文件夹中,在每个资源上保持完全相同的名称,只更改 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>
在 Android Studio 中,当您打开 ic_launcher.xml 文件时,您会在 previewx 选项卡中看到图标。现在我只看到默认图标:S
更新二:
问题是我找到了解决方案,我把它放在 build.gradle 中为每个变体
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher"
]
然后将 2 个 ic_launcher 文件放在默认文件夹中。我必须在清单中添加
android:icon="${appIcon}"
我认为这是一个糟糕的解决方案:(
我现在正在尝试寻找@W0rmH0le 解决方案,但有些不对劲
如何摆脱自适应图标以支持我的简单图标?
最后更新:
@W0rmH0le 和 @Derek 的提示确实很有帮助,但这里的信息可以帮助我解决我的问题:
1) AS 中的 New -> Image Asset UI 是唯一的方法,您可以一次又一次地使用它来尝试获取所需的图标
2) 完成 Image Asset UI 后,执行“Build -> Clean Project”和“Build -> Rebuild Project”
3)在这个阶段你最好使用自适应图标,因为如果你不这样做,你的应用程序将运行的系统可能会使你的图标变得难看
4)由于您使用的是自适应图标,因此不要尝试使用具有透明度的背景。Image Asset UI 将很好地显示它,但自适应图标背景不支持透明度
5)最后,为了得到2个版本的图标,我在常规过程中添加了一个图标,然后我去资源管理器将mipmapXXX文件夹复制到一个安全的地方。然后我以常规方式添加了另一个图标。为了完成它,我将保存的 mipmap 文件夹粘贴到了 @W0rmH0le 提到的 variante 文件夹树中