16

这不是一个问题。相反,当您使用外部 API 进行开发和 android.jar 时,在 Android 中发现的一个常见问题不会被复制到您的项目中!

4

3 回答 3

10

在各种论坛、谷歌和stackoverflow搜索之后,我似乎自己得到了一个解决方案,并想到了分享它。

  1. 每当您链接外部库时,最好通过创建 /lib 文件夹来链接它并将那些 .jar 转储到那里(意味着复制文件而不是链接它们)。使用Eclipse -> Build Properties -> Configure Build path -> Library tab -> Add external Jars链接它们。在此添加保存在 /lib 文件夹中的所需 .jar。(请注意,在 Eclipse 中作为“引用库”包含的 jar 将在 /lib 文件夹中消失!但是,不要担心,因为发生了正确的链接。另一个注意事项是检查引用的 /lib jar 是否不可见在构建属性的库选项卡中,因为它将被继承。)

  2. 另一个主要问题是何时使用 Google API。特别是那些使用 java/javax 的一些核心库函数的那些。对此要非常小心。错误在于,DalvikVM 尝试链接这些但由于发现重复而失败并且无法决定引用哪个。下面是错误。

    Dx trouble processing "javax/xml/namespace/QName.class": 
    Ill-advised or mistaken usage of a core class (java.* or javax.*) when not building a core library.
    

在这种情况下,我观​​察到,这个类在xpp3-1.1.4c.jar 中使用。如果您已将其复制到您的 /lib 文件夹中,请删除它。然后清理项目,并重新构建。此后船顺利航行。

如果存在此类重复,请对其他引用的 .jar 执行此操作。

干杯!

于 2012-04-16T15:06:38.850 回答
2

这对我有用。我正在使用 maven,xpp3-1.1.4c 依赖项显示在“Maven 依赖项”下;我不得不使用(右键单击依赖项)Maven->“排除 Maven Artifact...”来排除它。非常感谢 - 这真的很模糊。

于 2013-05-27T21:40:38.097 回答
2

此错误仅在您尝试生成签名 APK 时显示。有两种方法可以解决此问题。

1. 正如 Amira Elsayed Ismail 在这篇文章中评论的那样,我们 应该恢复到 gradle 2.3.3。

为此,您还应该下载 Android Studio 2.3.3,因为 studio 3.0.1 需要 gradle 插件 3.0+

这是第一个解决方案。但是还原 Android Studio 和 gradle 插件是一个痛苦的解决方案。

2. 解决所有依赖冲突。

当我恢复 gradle 时,Studio 2.3.3 显示我们感兴趣的警告(我不知道为什么 Studio 3.0.1 不显示依赖冲突警告

Warning:WARNING: Dependency xpp3:xpp3:1.1.4c is ignored for debug as it may be conflicting with the internal version provided by Android. Warning:WARNING: Dependency org.apache.httpcomponents:httpclient:4.3.3 is ignored for debug as it may be conflicting with the internal version provided by Android.

因此,这些依赖项在调试时被忽略,而不是在发布时被忽略。我通过排除这些依赖项来解决这个问题。

configurations {
        all*.exclude group: 'xpp3', module: ['xpp3' ,'httpclient']
    }

在此之后,我使用 gradle 3.0.1 成功生成了签名的 APK。(不恢复)

于 2018-02-06T16:22:15.880 回答