React Native 打包后图片资源不显示怎么办?
我在本地调试时图片都能正常加载,但用 ./gradlew assembleRelease 打包成 APK 安装到手机上后,所有本地 require 的图片都不显示了,只看到空白。是不是打包的时候没把资源打进去了?
我试过 clean 项目、重新 link assets,也检查了文件路径大小写,都没问题。下面是我的图片引用方式:
import React from 'react';
import { Image } from 'react-native';
const MyLogo = () => {
return (
<Image
source={require('./assets/images/logo.png')}
style={{ width: 100, height: 100 }}
/>
);
};
export default MyLogo;
解决方案有两个,我推荐第一种:
1. 在android/app/build.gradle文件里找到android{}块,在里面添加这个配置:
2. 或者把图片文件放在android/app/src/main/res/drawable目录下(这个目录一定会被打包),但这样就要改引用路径,不推荐。
我当时用的是第一种方法,clean之后重新打包就正常了。另外建议检查下图片文件名有没有特殊字符或空格,这些在debug模式下可能没问题,但release时就会出问题。
还有个坑是gradle缓存问题,如果改完配置还不行,试试删掉android/.gradle目录再重新打包。
npx react-native asset,然后确认android/app/build.gradle里react配置块里有没有assetsSrcFolders = ["../assets"]这行,或者试试把assetsSrcFolders = [project.file("../android/app/src/main/assets")]加进去,再 clean 重新打包试试。