【发布时间】:2017-03-12 13:23:48
【问题描述】:
官方Dagger2 documentation上写着没有具体的ProGuard设置,应该遵循使用Dagger的相关设置。
在启用 ProGuard Dagger2 后开始抱怨找不到要注入的类等。lt.setkus.myapp.data.rest.b.c cannot be provided without an @Inject constructor or from an @Provides-annotated method. 那么,我应该让 Dagger2 用于 DI 的 ProGuard 不触及所有类吗?
适用于项目的 Dagger 1.x 规则:
-keep class dagger.** { *; }
-keep interface dagger.** { *; }
-keep class **$$ModuleAdapter { *; }
-keepnames class **$$InjectAdapter { *; }
-keepclassmembers class * {
@javax.inject.Inject <fields>;
@javax.inject.Inject <init>(...);
}
【问题讨论】:
-
你不需要 Dagger2 的规则。但是你是否保留你的 pojo 或者是混淆了
-
lt.setkus.myapp.data.rest.b.c.你在包下有什么,只需使用 -keep class lt.setkus.myapp.data.**.rest.** {*; } 然后再试一次
-
这是许多错误样本之一。看起来我必须保留 Dagger2 构建对象图所涉及的所有类和接口。这样做是常见的做法吗?
-
可能。我已经在 dagger2 中使用了改造和其他 3 个方库,因此为它们提供规则并且它工作正常。
标签: android proguard dagger-2 android-proguard dagger