使用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.