Ionic Capacitor安卓端启动屏显示错误图标求助
解决Ionic Capacitor安卓端启动屏显示自定义图标的问题
在Ionic Capacitor项目中替换自定义启动屏后,iOS端显示正常,但安卓端却显示自定义图标而非启动屏。已尝试capacitor-resources -p android、cordova-res android --skip-config --copy和node resources.js命令,问题未解决。
排查与解决步骤
1. 修复资源复制脚本的逻辑问题
查看你的resource.js,启动屏复制逻辑存在不合理之处:
- 第一条规则将横屏低分辨率启动屏复制到默认
drawable/splash.png,这会导致默认启动屏资源错误。 - 修改
ANDROID_SPLASHES数组的第一个条目,替换为竖屏基础分辨率的启动屏:
const ANDROID_SPLASHES = [ { source: 'drawable-port-mdpi-screen.png', target: 'drawable/splash.png' }, // 替换为竖屏mdpi图 { source: 'drawable-land-mdpi-screen.png', target: 'drawable-land-mdpi/splash.png' }, { source: 'drawable-land-hdpi-screen.png', target: 'drawable-land-hdpi/splash.png' }, { source: 'drawable-land-xhdpi-screen.png', target: 'drawable-land-xhdpi/splash.png' }, { source: 'drawable-land-xxhdpi-screen.png', target: 'drawable-land-xxhdpi/splash.png' }, { source: 'drawable-land-xxxhdpi-screen.png', target: 'drawable-land-xxxhdpi/splash.png' }, { source: 'drawable-port-mdpi-screen.png', target: 'drawable-port-mdpi/splash.png' }, { source: 'drawable-port-hdpi-screen.png', target: 'drawable-port-hdpi/splash.png' }, { source: 'drawable-port-xhdpi-screen.png', target: 'drawable-port-xhdpi/splash.png' }, { source: 'drawable-port-xxhdpi-screen.png', target: 'drawable-port-xxhdpi/splash.png' }, { source: 'drawable-port-xxxhdpi-screen.png', target: 'drawable-port-xxxhdpi/splash.png' } ];
同时确认resources/android/splash/目录下的所有screen.png文件都是自定义启动屏,而非图标文件。
2. 清除旧资源并重新复制
- 删除安卓项目中旧的启动屏资源:
rm android/app/src/main/res/drawable/splash.png rm android/app/src/main/res/drawable-*/splash.png - 重新运行资源复制脚本:
node resources.js
3. 清理安卓项目缓存并重建
缓存残留可能导致旧资源未被替换,执行以下命令:
cd android ./gradlew clean ./gradlew assembleDebug
或直接在Android Studio中点击「Clean Project」→「Rebuild Project」。
4. 检查启动屏布局文件
确认安卓项目的启动屏布局文件android/app/src/main/res/layout/launch_screen.xml正确引用启动屏资源:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/splash"> <!-- 若存在ImageView,确保src指向@drawable/splash而非图标 --> <!-- <ImageView android:src="@drawable/splash" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" /> --> </LinearLayout>
确保android:background或ImageView的src属性指向@drawable/splash,而非图标资源(如@mipmap/ic_launcher)。
5. 验证Capacitor配置
你的capacitor.config.ts中androidSplashResourceName: "splash"配置正确,无需修改。若之前启用过layoutName,需确保对应的布局文件存在且配置正确。
内容的提问来源于stack exchange,提问作者Jaehyuck Choi
相关产品推荐
相关产品推荐

