我最近试图将我正在从GCM工作的应用程序迁移到FCM.在这样做的时候,我发现我以前在Dagger 2(2.0.2)中提供了我的Retrofit API和服务中的其他用户数据管理器的实例(没有问题),所以我不能再这样做了FirebaseMessagingService.
每当我尝试用我的Dagger 2 Component界面中列出的FirebaseMessagingService子类编译时,我会得到一个IllegalArgumentException.在挖掘一些代码之后,当Dagger 2尝试验证一个类名称并发现第一个字母不是大写时,似乎抛出了异常. FirebaseMessagingService至少在我的最后,继承了一个uglified / minified代码库,它的直接超类是zzb(public class FirebaseMessagingService extends com.google.firebase.iid.zzb).
我最好的猜测是这是罪魁祸首.如果这真的是问题,那么现在我不知道该怎么做,除了坚持GCM.任何人都有任何想法或类似的经验吗?
编辑:有机会问一个Firebase开发者关于这个问题:https://www.reddit.com/r/androiddev/comments/4upj1o/beware_of_the_new_firebase/d5tdbk3 – 没有决议.我可能只是避免直接注入并整合到静态API提供程序.
解决方法
经过半天的斗争,终于搬到了匕首2.7修正了问题.
compile "com.google.dagger:dagger:2.7" apt "com.google.dagger:dagger-compiler:2.7"