You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已设SplashScreen为none,如何自动移除Cordova Android构建的启动屏资源?

解决Cordova Android构建中自动移除启动屏资源的问题

我之前也踩过这个坑——明明在config.xml里设置了<preference name="SplashScreen" value="none"/>,但启动屏资源还是顽固地留在APK里,导致安装包体积虚高。手动删除platforms/android/res下的启动屏文件虽然有效,但每次构建都要手动操作太麻烦。下面几个自动解决方案亲测可行:

方法1:使用Cordova钩子脚本(推荐)

Cordova的钩子脚本可以在构建流程的特定阶段自动执行自定义操作,我们可以利用after_prepare钩子来删除启动屏资源:

  1. 在项目根目录创建钩子文件:
    新建hooks/after_prepare/01_remove_splash_resources.js(如果hooks/after_prepare目录不存在,先创建它)

  2. 写入以下脚本内容:

#!/usr/bin/env node

const fs = require('fs');
const path = require('path');

// 定位Android资源目录
const androidResDir = path.join(__dirname, '../../platforms/android/res');

// 列出所有要删除的启动屏资源(根据你的实际文件命名调整)
const splashFiles = [
    'drawable-hdpi/screen.png',
    'drawable-ldpi/screen.png',
    'drawable-mdpi/screen.png',
    'drawable-xhdpi/screen.png',
    'drawable-xxhdpi/screen.png',
    'drawable-xxxhdpi/screen.png',
    // 如果有其他命名的启动屏文件,比如splash.png,也添加进来
];

// 遍历删除文件
splashFiles.forEach(filePath => {
    const fullPath = path.join(androidResDir, filePath);
    if (fs.existsSync(fullPath)) {
        fs.unlinkSync(fullPath);
        console.log(`✅ 已删除启动屏资源:${fullPath}`);
    }
});
  1. 给脚本添加执行权限:
    在终端运行:
    chmod +x hooks/after_prepare/01_remove_splash_resources.js
    

之后每次执行cordova build android或cordova prepare android时,脚本都会自动清理掉指定的启动屏资源,无需手动操作。

方法2:彻底移除启动屏插件

如果你的项目之前安装过cordova-plugin-splashscreen,即使设置了SplashScreen为none,插件可能仍会自动复制资源。可以先卸载插件:

cordova plugin remove cordova-plugin-splashscreen

同时确保config.xml中没有任何<splash>标签,只保留<preference name="SplashScreen" value="none"/>。不过这个方法有时候不够彻底,因为部分Cordova模板可能默认携带启动屏资源,所以配合钩子脚本使用更稳妥。

方法3:修改Android构建脚本(临时方案)

你可以直接修改platforms/android/build.gradle,添加一个删除资源的任务:

// 添加删除启动屏资源的任务
task removeSplashResources(type: Delete) {
    delete fileTree(dir: 'res', include: 'drawable-*/screen.png')
}

// 让构建前先执行这个任务
preBuild.dependsOn removeSplashResources

但注意:如果你重新添加Android平台(cordova platform remove android && cordova platform add android),修改的build.gradle会被覆盖,需要重新配置,所以这个方法适合临时场景,长期使用还是推荐钩子脚本。


内容的提问来源于stack exchange,提问作者zhongshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:41:07