如何在Expo SDK47的Android应用中修改通知图标?
Expo SDK 47 Android通知图标无法修改的问题
我正在使用Expo SDK 47开发应用,已经通过Expo Notifications库成功实现通知功能,但始终无法修改Android端的通知图标。我已经尝试了两种app.json配置方案,均未生效:
尝试过的配置方案
方案1:通过expo-notifications插件配置
{ "expo": { "plugins": [ [ "expo-notifications", { "icon": "./assets/notification-icon.png", "color": "#FFFFFF" } ] ], // 其他配置项 } }
方案2:通过notification字段配置
{ "expo": { "notification": { "icon": "./assets/notification-icon.png" }, // 其他配置项 } }
由于项目中使用了需要原生代码的其他库,我是通过npx expo run:android命令直接在手机上编译运行应用的。
注:通知图标已按照要求制作,为96x96尺寸的灰度PNG图片。
解决方法
清理原生构建缓存
用expo run:android构建时,原生缓存可能会导致新配置不生效,执行以下命令清理后重新构建:npx expo prebuild --clean rm -rf android/app/src/main/res/drawable-*/*notification* npx expo run:android检查图标路径与命名
- 确认
./assets/notification-icon.png路径正确,文件确实存在于项目根目录的assets文件夹中。 - Android对资源文件命名有要求,建议把图标重命名为
notification_icon.png(用下划线代替连字符),同时修改配置中的路径为./assets/notification_icon.png。
- 确认
手动添加多分辨率图标到原生目录
自动配置失效时,可手动处理:- 生成对应分辨率的图标:mdpi(24x24)、hdpi(36x36)、xhdpi(48x48)、xxhdpi(72x72)、xxxhdpi(96x96)。
- 将各分辨率图标分别放入
android/app/src/main/res/drawable-[dpi]/目录,统一命名为ic_notification.png。 - 修改app.json中的插件配置:
[ "expo-notifications", { "icon": "@drawable/ic_notification", "color": "#FFFFFF" } ]
之后重新执行构建命令。
验证Manifest配置
构建完成后,检查android/app/src/main/AndroidManifest.xml是否包含以下meta-data:<meta-data android:name="expo.modules.notifications.default_icon" android:resource="@drawable/ic_notification" /> <meta-data android:name="expo.modules.notifications.default_color" android:value="#FFFFFF" />如果没有,说明配置未被正确注入,需重新执行
npx expo prebuild再构建。
内容的提问来源于stack exchange,提问作者Daniel Albuquerque
相关产品推荐
相关产品推荐

