React Native构建问题:如何让Gradlew忽略._filename文件?
React Native构建Android时忽略系统生成的
._filename文件方案 我的React Native应用执行npx react-native run-android命令时,持续返回系统自动生成的._filename文件相关错误。已尝试用dot_clean .命令删除这类文件,但构建过程中会重新生成,错误依旧存在。需要让Gradlew在构建过程中忽略._filename文件。
错误堆栈信息
ERROR:/project/path/node_modules/@react-native-firebase/app/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar: D8: com.android.tools.r8.internal.sd: Invalid classfile header com.android.tools.r8.internal.sd: Unexpected class file name: com/learnium/RNDeviceInfo/._BuildConfig.class at com.android.tools.r8.internal.ug.w(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:1180) (...) FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:dexBuilderDebug'. > Unexpected class file name: com/learnium/RNDeviceInfo/._BuildConfig.class * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2m 15s
解决方案
1. 在Gradle配置中添加忽略规则
在项目android/build.gradle(或android/app/build.gradle)的android块中添加packagingOptions配置,让Gradle打包时跳过所有._开头的文件:
android { // 保留原有配置... packagingOptions { exclude '**/._*' } }
2. 配置Git忽略这类文件
在项目根目录的.gitignore文件中添加以下规则,避免Git追踪这类文件,减少不必要的生成场景:
._*
3. 从系统层面禁止生成._文件(Mac系统)
在终端执行以下命令,全局禁用Mac系统在网络存储和USB存储中生成DS_Store及._开头的文件,从根源减少这类文件的产生:
defaults write com.apple.desktopservices DSDontWriteNetworkStores true defaults write com.apple.desktopservices DSDontWriteUSBStores true
执行后重启电脑生效。
验证步骤
添加上述配置后,先清理构建缓存再重新构建:
cd android && ./gradlew clean cd .. && npx react-native run-android
内容的提问来源于stack exchange,提问作者Erick Crus
相关产品推荐
相关产品推荐

