当我启用杰克编译器 https://source.android.com/source/jack.html在Android Studio 2.2中Dagger 2 https://google.github.io/dagger/组件未生成。 Dagger 2 可以和 Jack 一起使用吗?如果是这样,我将如何配置我的应用程序?
从我的应用程序build.gradle
:
jackOptions {
enabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
我花了两天时间才弄清楚这个问题。所以我回到这里发布调查结果,以防节省某人的时间:
这是由一个Jack 中的错误导致类路径无法正常工作 https://code.google.com/p/android/issues/detail?id=213471。它与 Jack “进程内”运行有关(与 gradle 守护进程在同一个 JVM 中)。环境android.defaultConfig.jackOptions.jackInProcess
为 false 确实超出了“先决条件”错误,但它会导致其他问题(2 个 JVM 占用系统资源)&bugs https://code.google.com/p/android/issues/detail?id=207493破坏其他构建(worse https://stackoverflow.com/questions/40640783/build-errors-when-switching-from-buildtoolsversion-24-0-2-to-anything-higher) ways.
目前,最好的解决方案似乎是:
- 等待 Android gradle 插件的 2.3 版本,它已经修复了这个问题。
- 同时将 Dagger 降级到 v2.2。
这是最高版本,似乎避免了番石榴与杰克的冲突。
编辑:2017 年 1 月 14 日更新:
我在使用 Jack 时遇到了其他几个问题,并且厌倦了它,所以我改用了 Retrolambda,并责怪自己不早点这样做!现在,杰克造成的问题似乎比它解决的问题还要多。只需添加带加号的行并删除带减号的行,您就可以返回到 Dagger 2.8,同时等待 Jack 开始行动!
+plugins {
+ id "me.tatarka.retrolambda" version "3.4.0"
+}
apply plugin: 'com.android.application'
+apply plugin: 'me.tatarka.retrolambda'
- jackOptions {
- enabled true
- }
为了更快地构建 Retrolambda,请添加org.gradle.jvmargs=-Xmx4608M
给你的gradle.properties
文件,以便 deshing 可以在进程中进行。现在,我使用的是 Dagger 2.8,我的干净的构建只有12秒,祝你摆脱困境,杰克!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)