执行任务':react-native-community_netinfo:compileReleaseJavaWithJavac'失败求助
问题场景
执行eas build --platform all命令构建Android应用时失败,卡滞多日未解决。以下是部分构建日志,不确定前置警告是否与最终错误相关,寻求解决方案。
构建日志
/home/expo/workingdir/build/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:162507:99: 警告:函数"PluralResolver"中未声明变量"Intl"
...atibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRul...
^~~~
/home/expo/workingdir/build/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:164862:18: 警告:函数"hotpDigestToToken"中未声明变量"Buffer"
var digest = Buffer.from(hexDigest, 'hex');
^~~~~~
/home/expo/workingdir/build/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle:168445:42: 警告:函数"equal 1#"中未声明变量"Element"
...f (hasElementType && a instanceof Element && b instanceof Element) return ...
^~~~~~~
FAILURE: 构建因异常失败。
- 出错原因:
任务':react-native-community_netinfo:compileReleaseJavaWithJavac'执行失败。
解决建议
优先处理核心编译错误(netinfo模块)
- 版本兼容性检查:确认
@react-native-community/netinfo版本与当前Expo/React Native版本匹配,参考官方文档调整版本号后重新构建 - 清理构建缓存:本地执行
./gradlew clean后再触发EAS构建,或在EAS构建配置中添加缓存清理步骤 - 权限与配置检查:确保AndroidManifest.xml中添加了
ACCESS_NETWORK_STATE权限,验证netinfo模块自动配置是否正常完成
处理日志中的警告(消除潜在风险)
- Intl未声明:安装
intl包,在项目入口文件(如App.js)中引入import 'intl'; import 'intl/locale-data/jsonp/zh-CN';(按需选择对应locale) - Buffer未声明:安装
buffer包,在代码中显式引入import { Buffer } from 'buffer',或在metro.config.js中配置全局polyfill:module.exports = { resolver: { extraNodeModules: { buffer: require.resolve('buffer'), }, }, }; - Element未声明:排查项目依赖,找出引入浏览器DOM API的代码,替换为React Native兼容实现,比如避免直接使用
Element类型判断,改用React Native组件的类型检查逻辑
内容的提问来源于stack exchange,提问作者ANewbieDeveloper

