升级至3.1.0-alpha08(canary-8)后Robolectric 3.6.1为何无法找到manifest输出?
解决AGP 3.1.0-alpha08搭配Robolectric 3.6.1时多模块测试的「Unable to find manifest output」错误
我之前也碰到过类似的问题,结合实践和社区讨论,给你整理了几个可行的解决办法:
快速临时修复
1. 手动指定测试manifest路径
在base、core、repository这些出问题的库模块的build.gradle文件中,添加sourceSets配置,明确告诉AGP测试用的manifest文件位置:
android { sourceSets { test { manifest.srcFile 'src/test/AndroidManifest.xml' } androidTest { manifest.srcFile 'src/androidTest/AndroidManifest.xml' } } }
如果你的测试目录还没有对应的manifest文件,直接创建一个最简版本即可,比如对应模块包名的空manifest:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yourcompany.base"> <!-- 替换成你的模块实际包名 --> </manifest>
2. 回退AGP版本
如果暂时不想调整配置,可以先把AGP降级到3.1.0-alpha07或者更早的预览版本,这个问题在之前的版本中是不存在的,等官方修复该bug后再升级即可。
问题背后的原因
这个错误是AGP 3.1.0-alpha08在处理多渠道库模块的测试配置时出现的bug——它没有正确生成或识别测试任务所需的manifest输出路径。而app模块作为应用模块,manifest的处理逻辑和库模块不同,因此没有触发这个错误。Robolectric初始化测试环境必须依赖manifest文件,找不到对应路径就会抛出「Unable to find manifest output」的异常。
内容的提问来源于stack exchange,提问作者TeeTracker
相关产品推荐
相关产品推荐

