我刚刚使用Image Asset Studio
android工作室将我的应用程序图标转换为与android o的自适应图标兼容
当我在运行API 25的设备上运行我的项目时,我得到默认的绿色android图标而不是我的图标.
这是我的表现
这些是图像资产工作室创建的文件
这只是一个Android Studio错误还是我错过了什么?
我遇到了同样的麻烦,并通过重命名我的mipmap-anydpi
目录来解决它mipmap-anydpi-v26
.
显然这个ic_launcher.xml
文件会混淆旧的Android版本,除了O之外,它隐藏了它.无论如何,我的图标现在适用于所有版本(至少到SDK 11).
解决方案是使mipmap-anydpi-v26/ic_launcher.xml
适用于API级别26及更高级别的自适应图标以及ic_launcher.png
所有mimpap文件夹中的其他API级别(注意:不是ic_launcher.xml).
说明:
这是基本问题mipmap-anydpi
优先于所有其他问题mipmap-*
.因此,如果找到资源mipmap-anydpi
,它将始终优先考虑.现在mipmap-anydpi-v26
是一个上面的过滤器,它表示只有在API级别为26或更高(Oreo)时mipmap-anydpi-v26
才会选择资源,而不管设备密度如何.
现在你表现出来了 android:icon="@mipmap/ic_launcher"
如果你的设备的API等级为26或以上,android会选择使用mipmap-anydpi-v26/ic_launcher.xml
,一切正常.
当API级别小于26时,会出现问题.Android统计信息查找名为的资源ic_launcher
.mipmap-anydpi-v26
由于API级别约束,它永远不会去搜索.接下来,它将查找资源mipmap-anydpi
,如果不存在,则查找实际密度资源Eg.mipmap-mdpi
.
接下来,你不能给ic_launcher.xml
Android设备少于sdk 26因为它不知道什么是自适应图标.
因此,解决方案是在mipmap-anydpi-v26/ic_launcher.xml
适用于API级别26及更高级别的自适应图标以及ic_launcher.png
所有mimpap文件夹中放置的其他API级别(注意:不是ic_launcher.xml).