android - DEX 无法使用 Gradle 解析包含 BuildConfig 和 R 的 jar,但可以与 Ant 一起使用

标签 android jar gradle dex

我正在尝试将一个项目迁移到 Android Studio/Gradle,但我遇到了一个奇怪的问题,该 jar 使用 Ant 运行良好。似乎 R 和 BuildConfig 包含在 jar 中,并且它们的包名称被声明为大写,而实际上包结构将其定义为小写。 (为了保护开发者的匿名性,我更改了包名,希望没问题)

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: class name (com/companyname/UI/BuildConfig) does not match path (com/companyname/ui/BuildConfig.class) at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520) at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) at com.android.dx.command.dexer.Main.processClass(Main.java:665) at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634) at com.android.dx.command.dexer.Main.access$600(Main.java:78) at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572) at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) at com.android.dx.command.dexer.Main.processOne(Main.java:596) at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264) at com.android.dx.command.dexer.Main.run(Main.java:230) at com.android.dx.command.dexer.Main.main(Main.java:199) at com.android.dx.command.Main.main(Main.java:103) ...while parsing com/companyname/ui/BuildConfig.class

这是我的问题:

  • 为什么它适用于 Ant 而不是 Gradle?
  • 这应该被视为缺陷/错误还是设计决策?
  • 为什么我在互联网上找不到其他人对其他 jar 有此问题?
  • 我可以就如何更正问题向开发人员提供哪些建议?

最佳答案

我认为如果您重建库并从/gen 目录中排除所有内容,一切都应该可以正常工作。

关于android - DEX 无法使用 Gradle 解析包含 BuildConfig 和 R 的 jar,但可以与 Ant 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934681/

相关文章:

java - 为什么我的 arduino uno with xbee shield v1.4 with bluetooth bee 没有从 android 接收任何数据?

android - Phonegap 输入类型密码字段焦点

android - MediaPlayer.start() 不能在构造函数中调用?

java - 为 Runnable Jars 使用不同的属性文件,Maven Eclipse

java - 无法同步、运行或测试简单的应用程序 android studio

java - 使用 Otto 时订户不会被解雇

ant - 无法找到tools.jar。正确的解决方案?

java - Spring 启动gradle "Could not find or load main class"

gradle - 兼容Android Studio 3.0的Gradle构建工具

eclipse - 如何让 Eclipse 显示 groovy 类的红色编译错误?