使用自适应图标时旧版图标不显示
Legacy icon does not show when using adaptive icon
我刚刚使用 android studio
中的 Image Asset Studio
将我的应用程序图标转换为与 android o 的自适应图标兼容
当我 运行 我的项目现在在我的设备上 运行ning API 25 我得到默认的绿色 android 图标而不是我的图标。
这是我的清单
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:allowBackup="false"
android:roundIcon="@mipmap/ic_launcher_round"
tools:replace="allowBackup"
tools:ignore="GoogleAppIndexingWarning">
这些是图像资产工作室创建的文件
这只是 Android Studio 错误还是我遗漏了什么?
我遇到了同样的麻烦,通过将我的 mipmap-anydpi
目录重命名为 mipmap-anydpi-v26
解决了这个问题。
显然 ic_launcher.xml
文件混淆了旧的 Android 版本,这对除 O 以外的所有版本都隐藏了它。无论如何,我的图标现在适用于所有版本(至少 SDK 11,至少).
解决方案是 mipmap-anydpi-v26/ic_launcher.xml
适用于 API 26 级及以上的自适应图标,而对于其他 API 级,则使用 ic_launcher.png
(注意:不是 ic_launcher.xml) 在所有 mimpap 文件夹中。
解释:
这是基本问题 mipmap-anydpi
优先于所有其他问题 mipmap-*
。因此,如果在 mipmap-anydpi
中找到资源,它将始终优先。现在 mipmap-anydpi-v26
是一个过滤器,它表示来自 mipmap-anydpi-v26
的资源将始终被选择,而不管设备密度如何 仅当 API 级别为 26 或更高时 (奥利奥)。
现在您的清单有 android:icon="@mipmap/ic_launcher"
如果您的设备 API 级别为 26 级或以上 android 将选择使用 mipmap-anydpi-v26/ic_launcher.xml
并且一切正常。
问题发生在 API 等级低于 26 级时。Android stats 寻找名为 ic_launcher
的资源。由于 API 级别限制,它永远不会在 mipmap-anydpi-v26
中搜索。接下来,它将在 mipmap-anydpi
中查找资源,如果不存在,则查找实际密度资源,例如。 mipmap-mdpi
。
接下来,不能给android 低于sdk 26 的设备ic_launcher.xml
,因为它不知道自适应图标是什么。
所以解决方案是 mipmap-anydpi-v26/ic_launcher.xml
适用于 API 26 级及以上的自适应图标,而对于其他 API 级,则将 ic_launcher.png
(注意:不是 ic_launcher.xml) 在所有 mimpap 文件夹中。
如果仍然无法正常工作,请检查您的 XML 中的架构,如果您使用从 Android studio 自动导入,它将无法正常工作,应该是 /apk/res/android。这是代码:
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
我遇到了同样的问题并解决如下。
将你的 ic_launcher.xml
和 ic_launcher_round.xml
放在 mipmap-anydpi-v26 中(确保你不应该有 ic_launcher.png/jpg
或 ic_launcher_round.png/jpg
在同一文件夹中)。
把你的 ic_launcher.png
放在 mipmap-hdpi/mdpi/xhdpi/xxhdpi/xxxhdpi 中(确保你不应该有 ic_launcher.xml
和 ic_launcher_round.xml
在这些同一个文件夹)。
通过这样做,您不会得到任何错误 building/running 项目。
希望对遇到同样问题的人有所帮助...
我将以一种非常简单的方式总结这一点。
我使用 android 工作室只是为了生成在我的 config.xml 文件中使用的来源(图像的背景和前景层)。
所以它看起来像这样:-
<icon background="resources/android/icon/ldpi_background.png" density="ldpi" foreground="resources/android/icon/ldpi_foreground.png">
以上配置适用于 Android API level > 25.
旧版本android
遗留图标的主要问题来了
根据 cordova 官方文档 - 旧版本 android 不支持自适应图标 - 并且在上面 config.xml 它只会选择前景部分作为后备图标,这就是你的图标的原因在旧版本中看起来不太好。
所以我为此应用了以下修复程序(根据 cordova 官方文档)
添加带有静态图像图标的 src 属性 - 因此在旧版本中,它将使用该图标而不是使用后备图标,而对于最新版本,它将优先考虑自适应图标,因此这两个问题都将得到解决。
修复后配置将如下所示:-
<icon background="resources/android/icon/ldpi_background.png" density="ldpi" foreground="resources/android/icon/ldpi_foreground.png" src="resources/android/icon/drawable-ldpi-icon.png"/>
我刚刚使用 android studio
中的Image Asset Studio
将我的应用程序图标转换为与 android o 的自适应图标兼容
当我 运行 我的项目现在在我的设备上 运行ning API 25 我得到默认的绿色 android 图标而不是我的图标。
这是我的清单
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:allowBackup="false"
android:roundIcon="@mipmap/ic_launcher_round"
tools:replace="allowBackup"
tools:ignore="GoogleAppIndexingWarning">
这些是图像资产工作室创建的文件
这只是 Android Studio 错误还是我遗漏了什么?
我遇到了同样的麻烦,通过将我的 mipmap-anydpi
目录重命名为 mipmap-anydpi-v26
解决了这个问题。
显然 ic_launcher.xml
文件混淆了旧的 Android 版本,这对除 O 以外的所有版本都隐藏了它。无论如何,我的图标现在适用于所有版本(至少 SDK 11,至少).
解决方案是 mipmap-anydpi-v26/ic_launcher.xml
适用于 API 26 级及以上的自适应图标,而对于其他 API 级,则使用 ic_launcher.png
(注意:不是 ic_launcher.xml) 在所有 mimpap 文件夹中。
解释:
这是基本问题 mipmap-anydpi
优先于所有其他问题 mipmap-*
。因此,如果在 mipmap-anydpi
中找到资源,它将始终优先。现在 mipmap-anydpi-v26
是一个过滤器,它表示来自 mipmap-anydpi-v26
的资源将始终被选择,而不管设备密度如何 仅当 API 级别为 26 或更高时 (奥利奥)。
现在您的清单有 android:icon="@mipmap/ic_launcher"
如果您的设备 API 级别为 26 级或以上 android 将选择使用 mipmap-anydpi-v26/ic_launcher.xml
并且一切正常。
问题发生在 API 等级低于 26 级时。Android stats 寻找名为 ic_launcher
的资源。由于 API 级别限制,它永远不会在 mipmap-anydpi-v26
中搜索。接下来,它将在 mipmap-anydpi
中查找资源,如果不存在,则查找实际密度资源,例如。 mipmap-mdpi
。
接下来,不能给android 低于sdk 26 的设备ic_launcher.xml
,因为它不知道自适应图标是什么。
所以解决方案是 mipmap-anydpi-v26/ic_launcher.xml
适用于 API 26 级及以上的自适应图标,而对于其他 API 级,则将 ic_launcher.png
(注意:不是 ic_launcher.xml) 在所有 mimpap 文件夹中。
如果仍然无法正常工作,请检查您的 XML 中的架构,如果您使用从 Android studio 自动导入,它将无法正常工作,应该是 /apk/res/android。这是代码:
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
我遇到了同样的问题并解决如下。
将你的 ic_launcher.xml
和 ic_launcher_round.xml
放在 mipmap-anydpi-v26 中(确保你不应该有 ic_launcher.png/jpg
或 ic_launcher_round.png/jpg
在同一文件夹中)。
把你的 ic_launcher.png
放在 mipmap-hdpi/mdpi/xhdpi/xxhdpi/xxxhdpi 中(确保你不应该有 ic_launcher.xml
和 ic_launcher_round.xml
在这些同一个文件夹)。
通过这样做,您不会得到任何错误 building/running 项目。
希望对遇到同样问题的人有所帮助...
我将以一种非常简单的方式总结这一点。
我使用 android 工作室只是为了生成在我的 config.xml 文件中使用的来源(图像的背景和前景层)。
所以它看起来像这样:-
<icon background="resources/android/icon/ldpi_background.png" density="ldpi" foreground="resources/android/icon/ldpi_foreground.png">
以上配置适用于 Android API level > 25.
旧版本android
遗留图标的主要问题来了根据 cordova 官方文档 - 旧版本 android 不支持自适应图标 - 并且在上面 config.xml 它只会选择前景部分作为后备图标,这就是你的图标的原因在旧版本中看起来不太好。
所以我为此应用了以下修复程序(根据 cordova 官方文档)
添加带有静态图像图标的 src 属性 - 因此在旧版本中,它将使用该图标而不是使用后备图标,而对于最新版本,它将优先考虑自适应图标,因此这两个问题都将得到解决。
修复后配置将如下所示:-
<icon background="resources/android/icon/ldpi_background.png" density="ldpi" foreground="resources/android/icon/ldpi_foreground.png" src="resources/android/icon/drawable-ldpi-icon.png"/>