如何在Cordova中设置Android TV应用自定义启动横幅?
我之前在做类似的Android TV Cordova项目时也踩过这个坑,结合你提到的技术栈,给你梳理下能解决问题的完整配置步骤:
1. 先确认横幅图片的规格与命名
Android TV对横幅有明确的规格要求,这一步错了后面再怎么配置都没用:
- 核心规格:xhdpi版本必须是320×180px,建议同时准备多dpi适配版本:
- drawable-xhdpi: 320×180px
- drawable-hdpi: 240×135px
- drawable-mdpi: 160×90px
- 文件名必须是小写的banner.png,Android资源文件名严格区分大小写,别写成Banner.png或者banner.jpg。
2. 正确配置config.xml中的resource-file
Corber的项目结构和纯Cordova略有差异,加上Cordova 8.0.0的Android平台已经采用app/src/main/res作为资源目录,你的resource-file配置必须指向正确的目标路径:
<platform name="android"> <!-- 按dpi分别配置资源文件 --> <resource-file src="cordova/res/drawable-xhdpi/banner.png" target="app/src/main/res/drawable-xhdpi/banner.png" /> <resource-file src="cordova/res/drawable-hdpi/banner.png" target="app/src/main/res/drawable-hdpi/banner.png" /> <resource-file src="cordova/res/drawable-mdpi/banner.png" target="app/src/main/res/drawable-mdpi/banner.png" /> </platform>
重点:别用旧的
res/路径作为target,Cordova 8.0.0的Android项目已经改用app模块下的资源目录了。
3. 验证AndroidManifest.xml的配置
虽然cordova-plugin-android-tv应该自动给<application>标签添加android:banner="@drawable/banner",但还是建议手动确认下platforms/android/app/src/main/AndroidManifest.xml里的配置:
<application android:banner="@drawable/banner" android:icon="@mipmap/ic_launcher" ...>
如果没有这个属性,手动补上即可(注意别直接修改platforms目录的文件,最好通过插件钩子或者config.xml的edit-config配置,避免构建时被覆盖)。
4. 清理缓存并重建项目(关键步骤)
Corber和Cordova的构建缓存经常会导致资源不更新,执行以下命令彻底重建:
# 移除Android平台 corber platform remove android # 重新添加指定版本的Android平台 corber platform add android@8.0.0 # 清理构建缓存 corber clean # 重新构建项目 corber build android
5. 清除设备/模拟器的缓存
Android TV主屏幕会缓存应用的横幅和图标,就算你配置正确了,旧缓存也可能让你看不到效果:
- 进入设备设置 → 应用 → 找到你的应用 → 存储 → 清除缓存
- 重启设备/模拟器,再回到主屏幕查看应用横幅
排查小技巧
如果还是没生效,可以打开platforms/android/app/src/main/res/目录,检查各个drawable文件夹下是否存在banner.png。如果没有,说明你的resource-file的src或target路径配置错误,调整后重新构建即可。
内容的提问来源于stack exchange,提问作者AMS777

