我遇到了这个错误,但没有发现错误消息的命中,所以我想我会分享我想出的解决方案,以拯救面临重复我工作的问题的其他人。
在编写用于(大型)应用程序的新 Android 库 (apklib) 时,当我将新项目添加为依赖项时,在 dexing 期间出现以下错误:
编写输出时遇到问题:字段引用过多:70185;最大值为 65536。
您可以尝试使用 --multi-dex 选项。
按包引用:
<...一长串省略了字段计数的包...>
它失败的特定构建步骤是:
java -jar $ANDROID_SDK/build-tools/19.0.3/lib/dx.jar --dex \
--output=$PROJECT_HOME/target/classes.dex \
<... long list of apklib and jar dependencies elided ...>
按照错误消息的建议使用--multi-dex
可能是一个解决方案,但我不是应用程序项目的所有者,它已经有一个庞大的复杂构建过程,无论如何我都会犹豫更改。
我可以使用实际上没有字段的无操作测试库项目重现此问题,但在错误输出中它被列为具有 6000 多个字段。在错误输出中列出的包中,有少数具有相似的 6k+ 字段计数,但绝大多数具有更合理的 <1k 字段计数。
这个问题类似于Facebook 著名的“方法太多”问题。FB 解决方案似乎很疯狂,而我发现的唯一其他解决方案(例如,这个 Android 错误票,或者这个,这个 SO 答案,这个另一个 SO 答案)都涉及更改主应用程序的代码,这远远超出了我想做的事。
还有其他解决方案吗?