我正在使用带有Proguard的Dagger2 android-support库但由于这个错误我无法编译我的项目:
Warning:dagger.android.AndroidInjector: can't find referenced class com.google.errorprone.annotations.DoNotMock
Warning:dagger.android.AndroidInjector$Builder: can't find referenced class com.google.errorprone.annotations.DoNotMock
Warning:dagger.android.AndroidInjector$Factory: can't find referenced class com.google.errorprone.annotations.DoNotMock
Warning:dagger.android.DaggerApplication: can't find referenced class com.google.errorprone.annotations.ForOverride
Warning:dagger.android.DispatchingAndroidInjector: can't find referenced class com.google.errorprone.annotations.CanIgnoreReturnValue
Warning:there were 5 unresolved references to classes or interfaces.
Run Code Online (Sandbox Code Playgroud)
我正在使用的Dagger版本是2.11.
问题是我应该为Dagger2 android-support库使用Proguard规则?
我有一个单例类,我已经用java方式实现了它:
companion object {
@Volatile private lateinit var instance: TrapBridge
fun bridge(): TrapBridge {
if (!this::instance.isInitialized) {
synchronized(this) {
if (!this::instance.isInitialized) {
instance = TrapBridge()
}
}
}
return instance
}
}
Run Code Online (Sandbox Code Playgroud)
现在问题是我不能使用isInitialized
属性,因为它抛出NoSuchFieldError
异常:
java.lang.NoSuchFieldError: No field instance of type Lcom/sample/trap/model/TrapBridge; in class Lcom/sample/trap/model/TrapBridge$Companion; or its superclasses (declaration of 'com.sample.trap.model.TrapBridge$Companion' appears in /data/app/com.sample.trapsample-L9D8b2vxEQfiSg9Qep_eNw==/base.apk)
Run Code Online (Sandbox Code Playgroud)
我认为这是因为instance
是类变量而不是实例变量所以我不能用this
关键字引用它:/
我也无法检查它是否为null因为它抛出UninitializedPropertyAccessException
:
lateinit property instance has not been initialized
Run Code Online (Sandbox Code Playgroud) 我想设计这样的东西:
正如你所看到的,fab位于标题和正文之间.
这很容易做到这一点的coordinatorLayout与app:anchor
和app:anchorGravity
属性
但我想用constraintLayout来做.
有任何想法吗 ?
android android-layout android-coordinatorlayout android-constraintlayout
我正在使用Evernotes android-job库进行Scheduling作业,一切正常但是,当我想运行一个运行Robolecteric的测试用例时,我得到了这个错误:
com.evernote.android.job.JobManagerCreateException: All APIs are disabled, cannot schedule any job
at com.evernote.android.job.JobManager.<init>(JobManager.java:184)
at com.evernote.android.job.JobManager.create(JobManager.java:107)
at com.M.MyApp.MyApplication.onCreate(MyApplication.java:63)
at org.robolectric.android.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:137)
at org.robolectric.RobolectricTestRunner.beforeTest(RobolectricTestRunner.java:290)
at org.robolectric.internal.SandboxTestRunner$2.evaluate(SandboxTestRunner.java:203)
at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:109)
Run Code Online (Sandbox Code Playgroud)
基本上它指向我的应用程序类的第63行:
JobManager.create(getApplicationContext()).addJobCreator(new JobMaker());
Run Code Online (Sandbox Code Playgroud) 我正在使用imageComparator将两个图像与OpenCV库进行比较,但我无法在我的应用程序中导入DMatch类,org.opencv.features2d.DMatch
任何人都知道我应该如何解决这个问题?