在某些版本的 android 上显示颤振应用程序图标的问题

Posted

技术标签:

【中文标题】在某些版本的 android 上显示颤振应用程序图标的问题【英文标题】:Issue displaying flutter app icon on certain versions of android 【发布时间】:2021-08-02 02:32:02 【问题描述】:

我有一个flutter应用程序,我在项目的android文件夹下使用android studio附带的图像资产工具生成了应用程序图标。但是在某些版本的 android 上,这个图标或颤振的默认图标都没有显示,这似乎告诉我这不仅仅是我提供的图标的问题,而是得到了默认的绿色 android:

上面的截图来自一个 android 5 模拟器(虽然现在它已经很老了,但它仍然在技术上受到颤振的支持,所以我想测试一下),我在运行 android 7 的物理设备上遇到了同样的问题,但图标似乎在上面的任何版本上都很好。我注意到的另一件事是,多任务菜单中没有出现应用名称,但我不确定这是否是一个完全不相关的问题。

如果有人可以帮助我,那就太好了,因为我无法弄清楚我需要在项目中放置哪些其他图标,因为我认为我已经涵盖了所有选项。谢谢。

编辑 - 这是我的应用程序的 android 清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="me.letalis.testapp">
   <application
        android:label="Test App"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <!-- Displays an Android View that continues showing the launch screen
                 Drawable until Flutter paints its first frame, then this splash
                 screen fades out. A splash screen is useful to avoid any visual
                 gap between the end of Android's launch screen and the painting of
                 Flutter's first frame. -->
            <meta-data
              android:name="io.flutter.embedding.android.SplashScreenDrawable"
              android:resource="@drawable/launch_background"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

资源文件夹:

【问题讨论】:

你能出示你的清单吗? 当然,我已经编辑了主要问题以包含它。 【参考方案1】:

按照这些步骤在 Android Studio 中更改/自定义启动器徽标,

*在项目视图中展开项目根文件夹

*右键点击应用文件夹

*在上下文菜单中转到新建->图像资源

*在出现的弹出窗口中选择您想要的新徽标(图像/剪贴画/文本)。

*如果您选择了图像单选按钮(作为默认选项),如果您单击 3 个按钮以显示路径树以定位您的 .png 图像文件,很可能您看不到它,因此,从 Windows 资源管理器(如果是 Windows)中将其拖放到树中,它就会出现并准备好被选中。

**不要忘记在 manifest 中设置新图标的位置:将 drawable 替换为 android:icon 中的小地图 –

.......Mipmap 解决方案: 如您所见,我为每个版本设置了 Mipmap,您也可以按照此操作, 您必须为 anydpi-v26 创建一个 XML 文件

`<?xml version="1.0" encoding="utf-8"?>


<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@color/ic_launcher_background"/>
    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>`

【讨论】:

我已经完成了“新 -> 图像资产”流程,并且我的“资源”中的所有文件夹都填充了新的自定义图像。在某些版本的android上,这可以正常工作,尽管在其他版本中,这个或默认的颤动图标都没有显示(根据我的主要帖子),所以我认为制作图像不是问题,但可能是一些配置?至于在清单中将drawable替换为minimap,您的意思是mipmap吗?如果是这样,我的清单中也有。 对于 Flutter 的自适应图标,请参阅通过此线程.. link .. 为了您的方便,我也更新了答案.. :) 好的,所以我检查了线程并查看了第二种方法,以防我在使用图像资产创建工具时出现问题,但我能发现线程和我的项目之间的唯一区别是我的似乎没有“ic_launcher_foreground.xml”。我还在清单中添加了 android:roundIcon="@mipmap/ic_launcher_round" ,但似乎没有什么不同。您提供的屏幕截图看起来确实与我生成的屏幕截图不同,所以我会更新帖子以包含我的。有什么不好看的吗? 好的,快速更新,我想我已经解决了。出于某种原因,创建新图像资产工具不会创建旧图标,尽管它可以同时使用自适应图标和旧图标。在复制并粘贴 ic_launcher_foreground 图像并将它们命名为 ic_launcher 之后,这似乎解决了我错过它们的问题。非常感谢:)

以上是关于在某些版本的 android 上显示颤振应用程序图标的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 版本 11 上面临颤振错误

在 Android 上使用 Flutter 显示在其他应用上

当我运行颤振应用程序显示警告:映射新的 ns http://schemas.android.co

[tag][!] Android Studio(未安装)[tag],在 PC 上运行颤振医生时出错

在某些安卓设备上显示白屏而不是谷歌地图

用于颤振的 GoogleMaps 插件仅显示 ios 模拟器上的标记