你要
@Module(library=true)
这是文档所说的
library:
如果此模块中所有包含的绑定对于满足其所有可注入类型都是必需的,则为False。如果模块不是库模块,则可以进行其他静态检查:工具可以检测是否不需要包含的绑定。
如果您提供此模块图未使用的绑定,则必须声明library = true。
(强调我的)
将模块声明为库并不能减轻Dagger了解注入点的需求。您仍然必须在对象图中使用列出的注入声明一个模块。
您的示例的极端简化版本如下所示:
repo/ +- library/ | +- Foo.java | `- FooModule.java | `- app/ +- BarActivity.java `- BarModule.java
FooModule.java:
@Module(library = true)public final class FooModule { @Provides @Singleton provideFoo() { return Foo(); }}BarModule.java:
@Module( injects = BarActivity.class, includes = FooModule.class)public final class BarModule {}在
BarActivity.java(或类似)中:
ObjectGraph og = ObjectGraph.create(new BarModule());og.inject(this);



