我刚刚使用Android工作室中的Image Asset Studio
将我的应用图标转换为与android o的自适应图标兼容
当我在运行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错误还是我错过了什么?
答案 0 :(得分:32)
我遇到了同样的问题,并通过将mipmap-anydpi
目录重命名为mipmap-anydpi-v26
来解决了这个问题。
显然ic_launcher.xml
文件会混淆较旧的Android版本,除了O之外,它隐藏了所有版本。无论如何,我的图标现在适用于所有版本(至少到SDK 11)。
答案 1 :(得分:12)
解决方案是将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统计信息正在寻找名为ic_launcher
的资源。由于API级别的限制,它永远不会在mipmap-anydpi-v26
中进行搜索。接下来,它将在mipmap-anydpi
中查找资源,如果不存在,则查找实际密度资源Eg。 mipmap-mdpi
。
接下来,您不能将ic_launcher.xml
分配给小于sdk 26的android设备,因为它不知道什么是自适应图标。
因此,解决方案是将mipmap-anydpi-v26/ic_launcher.xml
的适用于API级别26以上的自适应图标以及其他API级别的ic_launcher.png
(注意:不是ic_launcher.xml)放在所有mimpap文件夹中。
答案 2 :(得分:1)
我也遇到了同样的问题,并解决了以下问题。
将您的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
这些相同的文件夹)。
这样做,您将不会在构建/运行项目时遇到任何错误。
希望它可以帮助一些同样的问题...
答案 3 :(得分:0)
如果仍然无法正常运行,请在中检查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>
答案 4 :(得分:0)
我会以一种非常简单的方式来总结这一点。
我使用 android studio 只是为了生成在我的 config.xml 文件中使用的源(图像的背景和前景层)。
所以它看起来像这样:-
<icon background="resources/android/icon/ldpi_background.png" density="ldpi" foreground="resources/android/icon/ldpi_foreground.png">
以上配置适用于 Android API 级别 > 25。
旧版安卓系统遗留图标的主要问题是
根据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"/>