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

2024-05-01

当使用不可变的.io http://immutables.github.io/在多模块 Android 应用程序中使用注释处理器,构建会失败,当package-info.java文件被使用。

我已经成功在 GitHub 上构建了一个最小的测试项目来重现该问题:不可变包信息问题 https://github.com/tmtron/ImmutablesPackageInfoIssue

该项目由 2 个模块组成:

  • 应用程序: 安卓应用程序:@Value.Immutable用于AndroidIm.java
  • lib:java模块:@Value.Immutable用于JavaIm.java

所以基本上,使用不可变的.io http://immutables.github.io/在两个模块中都工作正常。
但是当我们添加一个package-info.java文件(到com.example package in the appmodule),编译失败并出现以下错误:

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
  • and ALSO在应用程序项目中(不应该发生):
    \build\generated\source\apt\debug\com\example\ImmutableJavaIm.java

已知的解决方法:

  • 删除package-info.java file
  • 清除/注释掉其内容
  • 配置构建以忽略package-info.java file

注意:我不能忽略该文件,因为它包含构建的重要注释:例如不可变风格的配置 https://immutables.github.io/style.html#apply-style

有什么想法为什么会发生这种情况或者可能是什么原因吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐