执行detox构建Android调试包时出现META-INF/MANIFEST.MF重复文件错误
解决Detox构建Android时出现的META-INF/MANIFEST.MF重复错误
运行detox build -c android.emu.debug时,持续出现以下错误:
23 files found with path 'META-INF/MANIFEST.MF' from inputs:
错误来源为shopify_react-native-skia:mergeDebugAndroidTestJavaResource。
环境
- Expo: SDK 48
- Flow: Bare
- 设备: Android
已尝试的解决方案
- 在
gradle.properties中禁用zipflinger:android.useNewApkCreator=false - 在app的
build.gradle中配置构建时排除文件:packagingOptions { exclude("META-INF/MANIFEST.MF") }
预期所有META-INF/MANIFEST.MF文件会被排除,但问题仍未解决。
可行解决建议
1. 为测试变体添加排除规则
错误发生在测试构建阶段(mergeDebugAndroidTestJavaResource),之前的配置仅覆盖主应用构建,需为测试变体单独配置:
android { packagingOptions { exclude("META-INF/MANIFEST.MF") } // 为所有测试变体添加排除规则 testVariants.all { variant -> variant.packagingOptions.exclude("META-INF/MANIFEST.MF") } }
2. 针对react-native-skia库单独配置
在项目根目录的build.gradle中,直接对该库的构建规则进行调整:
subprojects { if (project.name.contains("react-native-skia")) { android { packagingOptions { exclude("META-INF/MANIFEST.MF") } testVariants.all { variant -> variant.packagingOptions.exclude("META-INF/MANIFEST.MF") } } } }
3. 清理构建缓存后重试
缓存可能导致旧配置残留,执行以下命令清理后重新构建:
./gradlew clean rm -rf ~/.gradle/caches detox build -c android.emu.debug --clean
内容的提问来源于stack exchange,提问作者Aurelien Essome
相关产品推荐
相关产品推荐

