安卓动态添加shortcut,出现黑图标

使用quick_actions插件动态设置安卓的快捷入口(shortcut),在dev模式下一切正常,但是打包成release之后,发现安装的App长按后显示的是黑色块,并没有显示出预设的图标。

final QuickActions quickActions = QuickActions();
// shortcut的注册
try {
    await quickActions.setShortcutItems(<ShortcutItem>[
        ShortcutItem(
            type: 'to-write',
            localizedTitle: '写日记',
            icon: Platform.isIOS ? 'ShortcutToWrite' : 'ic_shortcut_to_write',
        ),
        ShortcutItem(
            type: 'search',
            localizedTitle: '搜索我的日记',
            icon: Platform.isIOS ? 'ShortcutSearch' : 'ic_shortcut_search',
        ),
    ]);
} on PlatformException catch (err) {
    //do some log
    return;
}

阅读原文档才发现,最末尾有一行提醒,动态设置的shortcut,要想在打release包时,将图标也打到包里,就需要通过manifest的keep功能做标记。

方法就是创建一个xml,按谷歌官方的建议就叫keep.xml,放在android/app/src/main/res/raw/下,好像文件名字和位置都可以自己定义的。其内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@drawable/ic_shortcut*,@drawable/l_used_a,@drawable/l_used*_b"
    tools:discard="@drawable/unused2" />

这里的内容只是举例,keep是标记要打包保留的文件,支持通配符,多个用逗号分隔。discard就是标记不要保留的文件。特别注意:keep里不需要写.png扩展名,否则就会不work.

发表于 2023年12月08日 17:03   评论:0   阅读:378  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo