迁移至cordova-android-11:新Splash Screen API适配问题求助
解决Cordova-Android 11自适应启动屏图标编译问题及API逻辑说明
一、文件放置的正确规则
你遇到的编译错误核心原因是资源文件没有放到Cordova识别的标准Android资源目录下,导致构建时无法同步到platforms/android目录。按以下路径放置Android Studio生成的自适应图标相关文件:
- 自适应图标定义文件(
ic_launcher.xml):放到项目根目录的res/mipmap-anydpi-v26/(没有就手动创建该目录) - 前景资源:
- 若是矢量图(
ic_launcher_foreground.xml):放到res/drawable/ - 若是不同密度的PNG图:分别放到
res/mipmap-mdpi/、res/mipmap-hdpi/、res/mipmap-xhdpi/、res/mipmap-xxhdpi/、res/mipmap-xxxhdpi/
- 若是矢量图(
- 背景资源:
- 若是矢量图(
ic_launcher_background.xml):放到res/drawable/ - 若是不同密度的PNG图:同上,分密度放到对应
mipmap-*目录
- 若是矢量图(
注意:必须放在项目根目录的
res文件夹下,而非www/res或其他自定义资源目录,Cordova仅会同步这个标准Android资源结构下的文件。
二、Cordova对新Splash Screen API的处理逻辑
- 强制依赖AndroidX Splash Screen API:Cordova-Android 11彻底弃用旧版
cordova-plugin-splashscreen的启动屏逻辑,完全对接原生AndroidX的Splash Screen API。 - 资源同步机制:构建时,Cordova会将项目根目录
res下的所有标准Android资源(符合mipmap/、drawable/等命名规则的目录),完整复制到platforms/android/app/src/main/res/目录,非标准目录下的资源会被忽略。 - 自适应图标优先级:
mipmap-anydpi-v26/下的自适应图标XML仅会被Android 8.0(API 26)及以上版本系统加载,低版本系统会自动 fallback 到普通mipmap-*目录下的静态图标,所以建议同时保留不同密度的静态图标做兼容。
三、像素密度适配的实现方式
你看到的any-dpi是自适应图标的特性,它本身不存储像素信息,仅负责引用前景和背景资源。Cordova完全遵循Android原生的资源匹配规则:
- 如果使用矢量图(XML格式):系统会自动根据设备分辨率缩放,无需分密度放置。
- 如果使用PNG图:Cordova会按设备的像素密度,自动匹配对应
mipmap-*目录下的图片(比如xxhdpi设备会加载mipmap-xxhdpi下的前景图)。
四、完整配置步骤
- 在项目根目录创建
res文件夹,以及以下子目录:mipmap-anydpi-v26、mipmap-mdpi、mipmap-hdpi、mipmap-xhdpi、mipmap-xxhdpi、mipmap-xxxhdpi、drawable。 - 把Android Studio生成的
ic_launcher.xml放到res/mipmap-anydpi-v26/,并检查XML内的资源引用路径是否正确(比如前景是@drawable/ic_launcher_foreground,背景是@drawable/ic_launcher_background,如果是PNG则改为@mipmap/xxx)。 - 将前景、背景资源放到对应目录,确保文件名全小写、仅用下划线分隔(Android资源命名规则)。
- 在
config.xml中添加配置:
<!-- 指定自适应图标 --> <preference name="AndroidLauncherIcon" value="@mipmap/ic_launcher" /> <!-- 可选:直接设置启动屏背景色,可替代背景图 --> <preference name="SplashScreenBackgroundColor" value="#FFFFFF" />
- 执行
cordova clean android清理缓存后,再重新构建项目。
内容的提问来源于stack exchange,提问作者Mister_CK
相关产品推荐
相关产品推荐

