React Native 0.66运行yarn android报错找不到com.android.volley:volley:1.1.1
React Native 0.66 安卓构建问题解决方案
1. 依赖拉取失败(com.android.volley:volley:1.1.1 找不到)修复
不推荐全量引入jcenter,该源已停止维护,存在安全风险,建议使用以下更安全的方案:
- 方案一:升级
react-native-google-places到兼容RN 0.66的最新版本,新版依赖的Google Places SDK已适配主流maven源,无需额外配置jcenter - 方案二:修改根目录
build.gradle,限定jcenter仅拉取volley依赖,避免其他包从jcenter拉取过期资源,配置如下:
allprojects { repositories { // 原有所有源保持不变 mavenCentral() mavenLocal() maven { url("$rootDir/../node_modules/react-native/android") } maven { url("$rootDir/../node_modules/jsc-android/dist") } google() maven { url 'https://www.jitpack.io' } // 新增以下配置,仅从jcenter拉取volley jcenter { content { includeModule("com.android.volley", "volley") } } } }
2. ENOENT 路径拼接错误修复
该报错是RN 0.66对应Metro版本的已知问题,Metro错误将HTTP请求地址拼接成本地文件路径,按以下步骤修复:
- 第一步:清空所有缓存重新构建
# 重装依赖 rm -rf node_modules && yarn install # 启动Metro时清空缓存 npx react-native start --reset-cache # 清空安卓构建缓存 cd android && ./gradlew clean && cd ..
- 第二步:检查
android/app/src/main/AndroidManifest.xml的application标签,添加明文请求权限:
<application android:usesCleartextTraffic="true" <!-- 其他原有配置保持不变 --> >
- 第三步:若上述操作未生效,修改项目根目录
metro.config.js(不存在则新建),添加路径重写配置:
module.exports = { transformer: { getTransformOptions: async () => ({ transform: { experimentalImportSupport: false, inlineRequires: true, }, }), }, server: { rewriteRequestUrl: (url) => { if (url.startsWith('/http')) return url.slice(1) return url } } };
内容的提问来源于stack exchange,提问作者ha3an
相关产品推荐
相关产品推荐

