Immutables-library两次生成相同的不可变类

时间:2017-07-29 19:05:24

标签: android-build annotation-processing package-info immutables-library

在多模块Android应用中使用immutables.io注释处理器时,如果使用package-info.java文件,则构建失败。

我设法在GitHub上构建一个最小的测试项目来重现这个问题: ImmutablesPackageInfoIssue

该项目由2个模块组成:

  • app:安卓应用:@Value.Immutable用于AndroidIm.java
  • lib:java模块:@Value.Immutable
  • 中使用了JavaIm.java

所以基本上,在两个模块中使用immutables.io都可以正常工作 但是当我们添加package-info.java文件(com.example package模块中的app)时,编译失败并显示以下错误:

com.android.build.api.transform.TransformException: 
com.android.dex.DexException: Multiple dex files define Lcom/example/ImmutableJavaIm$1;

发生Dex错误,因为ImmutableJavaIm.java生成了两次:

  • 一次进入lib项目(预期):
    \build\generated\source\apt\main\com\example\ImmutableJavaIm.java
  • 应用项目中的
  • ALSO (不应该发生):
    \build\generated\source\apt\debug\com\example\ImmutableJavaIm.java

已知的解决方法:

  • 删除package-info.java文件
  • 明确/评论其内容
  • 配置构建以忽略package-info.java文件

注意:我不能忽略该文件,因为它包含构建的重要注释:例如immutables-style configuration

为什么会发生这种情况或可能是什么原因的任何想法?

0 个答案:

没有答案