在库模块中找不到使用Dagger 2和Proguard生成的符号

时间:2018-08-09 08:57:35

标签: android kotlin annotations proguard dagger-2

我必须在工作中为笔记本电脑成像。现在,该项目将无法构建。其他开发人员可以继续以相同的提交罚款进行构建,因此这一定是某个环境问题。

我在我的完全Kotlin项目中使用Dagger 2,该项目具有一个app模块,然后具有一个单独的data模块。在启用proguard的情况下编译 release 版本时,我在data库模块的所有已生成类中均收到以下错误(它也可能在app模块中发生,但其没那么远):

error: cannot find symbol
@Generated(
 ^
  symbol: class Generated
100 errors


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':data:compileProductionReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

我的data模块的build.gradle文件中有此文件用于依赖性:

implementation 'com.google.dagger:dagger:2.14.1'
kapt 'com.google.dagger:dagger-compiler:2.14.1'
compileOnly 'org.glassfish:javax.annotation:10.0-b28'

与我的app模块的相同

implementation 'com.google.dagger:dagger:2.14.1'
kapt 'com.google.dagger:dagger-compiler:2.14.1'
compileOnly 'org.glassfish:javax.annotation:10.0-b28'

两个文件的顶部都带有apply plugin: 'kotlin-kapt'

我曾尝试过清理建筑物,使缓存无效并重新启动Android Studio,但是没有运气。我还尝试了将额外的kapt 'com.google.dagger:dagger-android-processor:2.14.1'添加到data模块中,但这还是行不通的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于我的笔记本电脑被擦掉,并且安装的Java的唯一版本是using System; using System.Windows.Input; namespace Test { public class ButtonCommand : ICommand { private Action WhattoExecute; private Func<bool> WhentoExecute; public ButtonCommand(Action What, Func<bool> When) { WhattoExecute = What; WhentoExecute = When; } public bool CanExecute(object parameter) { return WhentoExecute(); } public void Execute(object parameter) { WhattoExecute(); } public event EventHandler CanExecuteChanged; } } ,因此gradle的安装就使用了该版本的JDK。 (1.10显示了此版本。

为了解决这个问题,我使用自制软件下载了Java 8。

gradle -v

然后使用gradle 1.8版本,在我的brew tap caskroom/versions brew cask install java8 文件中添加了以下几行。

/etc/profile

然后我跑export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home" export PATH=$JAVA_HOME/bin:$PATH ,瞧。我的项目可以再次构建!