集成Detox后assembleAndroidTest构建报错,如何配置忽略子模块?
解决assembleAndroidTest时oomcatcher模块的重复Native库错误(忽略该模块测试任务)
既然你完全不关心oomcatcher模块的Android Test任务,最直接的办法就是让Gradle直接跳过该模块所有和Android测试相关的构建步骤,这样就能彻底避开这个重复so文件的错误。下面给你两种可行的方案:
方案一:完全跳过oomcatcher模块的Android Test任务
这个方案最贴合你的需求,因为你明确不需要这个模块的测试。你可以通过两种方式配置:
方式1:修改oomcatcher模块的build.gradle
打开submodules/oomcatcher/build.gradle,在android代码块里添加以下配置:
android { // 保留你原本的所有配置... // 跳过所有AndroidTest变体的构建任务 androidTestVariants.all { variant -> variant.setIgnore(true) } }
方式2:在根项目build.gradle全局配置(无需修改子模块)
如果你不想改动子模块的代码,可以在项目根目录的build.gradle里添加:
subprojects { if (project.name == 'oomcatcher') { android { androidTestVariants.all { variant -> variant.setIgnore(true) } } } }
配置完成后,Gradle在执行assembleAndroidTest时会直接跳过oomcatcher模块的所有测试相关任务,自然不会触发那个报错的mergeDebugAndroidTestNativeLibs任务。
方案二:仅解决重复so文件冲突(可选)
如果之后你可能需要用到该模块的测试,可以用这个方案来修复冲突,而不是跳过任务:
打开submodules/oomcatcher/build.gradle,在android代码块里添加打包选项:
android { // 保留原本的配置... packagingOptions { // 遇到重复的libc++_shared.so时,只保留第一个找到的文件 pickFirst 'lib/armeabi-v7a/libc++_shared.so' // 如果其他架构也有同样的问题,依次添加: // pickFirst 'lib/arm64-v8a/libc++_shared.so' // pickFirst 'lib/x86/libc++_shared.so' // pickFirst 'lib/x86_64/libc++_shared.so' } }
配置完成后,重新执行你的构建命令:
./gradlew assembleAndroidTest -DtestBuildType=debug
应该就能顺利完成构建了。
内容的提问来源于stack exchange,提问作者pvd
相关产品推荐
相关产品推荐

