React Native Expo项目react-native-bootsplash缺失bootsplash_logo报错
解决React Native Expo中react-native-bootsplash缺失bootsplash_logo drawable的问题
问题重现
执行react-native-bootsplash generate命令后,hdpi/xhdpi等dpi目录的资源已生成,但Android编译时提示drawable/bootsplash_logo找不到,报错信息如下:
A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction > Android resource linking failed com.raywenderlich.android.drinkit.app-mergeReleaseResources-93:/values/values.xml:5915: error: resource drawable/bootsplash_logo (aka com.raywenderlich.android.drinkit:drawable/bootsplash_logo) not found. com.raywenderlich.android.drinkit.app-mergeReleaseResources-93:/values/values.xml:5915: error: resource drawable/bootsplash_logo (aka com.raywenderlich.android.drinkit:drawable/bootsplash_logo) not found. error: failed linking references.
使用的生成命令:
yarn react-native-bootsplash generate assets/light-logo.png \ --platforms=android,ios,web \ --background=F5FCFF \ --logo-width=100 \ --assets-output=assets/bootsplash \ --flavor=main \
解决方案
1. 调整生成命令参数
Expo项目默认不支持Android flavor配置,且资源需要放在Android原生目录才能被识别,修改命令如下:
yarn react-native-bootsplash generate assets/light-logo.png \ --platforms=android,ios,web \ --background=F5FCFF \ --logo-width=100 \ --assets-output=android/app/src/main/res/
- 移除
--flavor=main参数:Expo无默认flavor,该参数会导致资源生成到非标准目录 - 修改
--assets-output为android/app/src/main/res/:直接将资源生成到Android原生资源目录,确保系统能识别到bootsplash_logo
2. 手动迁移已生成的资源
如果你已经生成了资源到assets/bootsplash,可以手动迁移:
- 找到
assets/bootsplash/android/下的drawable-hdpi、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi文件夹 - 将这些文件夹复制到
android/app/src/main/res/目录下,确保每个dpi文件夹内都包含bootsplash_logo.png
3. 清理缓存并重建项目
缓存可能导致资源未被正确识别,执行以下步骤:
- 清除Expo缓存:
expo r -c - 进入Android目录清除Gradle缓存:
cd android ./gradlew clean cd .. - 重新编译运行:
expo run:android
4. 验证资源引用
检查android/app/src/main/res/values/values.xml中的引用,确保是@drawable/bootsplash_logo,没有拼写错误或路径错误。
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

