You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:32:42