【问题标题】:Is there a way to get the Dex Loader in Android to allow multiple of a class?有没有办法让 Android 中的 Dex Loader 允许多个类?
【发布时间】:2013-06-22 18:11:07
【问题描述】:

当我有一个使用库项目的 android 项目并且它们都在 apt_generated 文件夹中生成具有相同名称的类时,我收到“Dex Loader] 无法执行 dex:多个 dex 文件定义 xxx”错误。该类在两个项目中的名称和内容完全相同,但由于有多个,因此在尝试部署时出现错误。有没有可以设置的标志或任何东西,它总是使用第一类而忽略任何其他同名的?

【问题讨论】:

  • AFAIK,没有。将有问题的类移动到另一个项目中,因此两个库项目可以引用相同的实现,而不是每个都有自己的实现。或者,将一个实现重构为一个新包。

标签: java android


【解决方案1】:

一种选择是从其中一个项目的构建中排除库项目。

库项目依赖项存储在 Eclipse/ADT 的 Android Private Libraries 类路径容器中。

在最新的 ADT 中(可能在旧版本中),您可以选择不导出此类路径容器。

想象一下你的项目取决于

  • Google Play 服务库。
  • android-maps-utils(一个也依赖于 Google Play 服务的谷歌地图扩展库项目)

在这种情况下,您将在打包/部署时遇到以下错误:

Unable to execute dex: Multiple dex files define Lcom/google/android/gms/R$attr;
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/android/gms/R$attr;

如果您通过取消选中 Java Build 路径的 `Order and Export1 视图中突出显示的容器,将 android-maps-utils 项目配置为不导出 Android Private Libraries,则 Dex 错误将消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2012-11-04
    • 2016-07-02
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    相关资源
    最近更新 更多