小编Dav*_*iño的帖子

尽管Dagger可以生成点文件,但它无法创建对象图

在现有的应用程序中,我正在努力设置Dagger(1.0.1).它被配置为使用ProGuard,但我禁用它进行此测试-dontobfuscate.

当我启用dagger-compiler时,它能够成功生成带有依赖关系图的点文件,但是当我删除编译器并在Release模式下构建应用程序时,它会在启动时崩溃,抱怨它无法创建对象图.

java.lang.RuntimeException: Unable to start activity 
  ComponentInfo{com.corp.myapp/com.corp.myapp.ui.activity.MainActivity}: 
  java.lang.IllegalStateException: Errors creating object graph:

No injectable members on com.corp.myapp.core.services.ConnectionMonitor. Do 
  you want to add an injectable constructor? required by 
  com.corp.myapp.core.services.ConnectionMonitor 
  com.corp.myapp.ui.activity.MyAppBaseActivity.connectionManager

No injectable members on com.corp.myapp.ui.crouton.CroutonManager. Do you want 
  to add an injectable constructor? required by 
  com.corp.myapp.ui.crouton.CroutonManager 
  com.corp.myapp.ui.activity.MyAppBaseActivity.croutonManager

No injectable members on com.corp.core.assembler.ResourceAssembler. Do you want 
  to add an injectable constructor? required by 
  com.corp.core.assembler.ResourceAssembler 
  com.corp.myapp.ui.activity.MyAppBaseActivity.resourceAssembler
Run Code Online (Sandbox Code Playgroud)

我看到MyAppBaseActivity它和生成的点文件中的依赖关系CroutonManagerConnectionMonitor显示,所以根据这个评论,我希望这个工作.AFAIK如果出现问题,应该通过我用来生成点文件的编译器启用的构建来检测它.


更新:

我之前曾说过

在调试模式下它永远不会失败

但是在进一步测试之后并不是真的:在调试 …

android dependency-injection proguard dagger

5
推荐指数
1
解决办法
5078
查看次数

Robolectric和Powermock之间的类加载冲突

我正在尝试编写一个需要Robolectric 2.2和PowerMock的测试,因为测试中的代码依赖于一些Android库和第三方库以及我需要模拟的最终类.

鉴于我被迫使用Robolectric测试跑步者:

@RunWith(RobolectricTestRunner.class)
Run Code Online (Sandbox Code Playgroud)

...我无法使用PowerMock测试运行器,因此我尝试使用PowerMock java代理替代方案,目前为止没有运气.

我根据本指南设置了所有内容,但是我遇到了javaagent库和robolectric通过它与asm-1.4的依赖关系所需的类之间的冲突问题.两者都依赖于

org.objectweb.asm.ClassVisitor

但是javaagent-1.5.1附带了自己的版本,其中ClassVisitor是一个接口,而同一命名空间的asm-1.4版本是一个抽象类,在运行时有相应的错误:

java.lang.IncompatibleClassChangeError: class org.objectweb.asm.tree.ClassNode has interface org.objectweb.asm.ClassVisitor as super class
Run Code Online (Sandbox Code Playgroud)

我甚至试图修改javaagent库jar以完全删除那里的org.objectew.asm类,但由于org.objectweb.asm包中只需要运送其他类所需的ClassNotFoundException,因此无效在javaagent库jar中,而不是在asm中.

有任何想法吗?根据示例,代理似乎与至少Spring测试运行器一起正常工作.

powermock robolectric

5
推荐指数
1
解决办法
926
查看次数

lint将数据绑定生成的代码使用的布局错误地报告为UnusedResource

Lint正在考虑使用数据绑定生成的类使用的布局为未使用,因此会触发相应的UnusedResource警告。

例如:

../../src/main/res/layout/activity_start.xml:2:资源R.layout.activity_start似乎未使用

尽管在使用数据绑定生成的类之一中有一个引用:

public static ActivityStartBinding inflate(android.view.LayoutInflater inflater, android.databinding.DataBindingComponent bindingComponent) {
    return bind(inflater.inflate(com.tuenti.messenger.R.layout.activity_start, null, false), bindingComponent);
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使棉绒考虑那些生成的类,以避免这些误报?

android lint android-databinding

5
推荐指数
1
解决办法
459
查看次数