【发布时间】:2012-04-23 07:04:17
【问题描述】:
这不是一个问题。相反,当您使用外部 API 进行开发和 android.jar 时,在 Android 中发现的一个常见问题不会被复制到您的项目中!
【问题讨论】:
标签: java android eclipse dalvik google-places-api
这不是一个问题。相反,当您使用外部 API 进行开发和 android.jar 时,在 Android 中发现的一个常见问题不会被复制到您的项目中!
【问题讨论】:
标签: java android eclipse dalvik google-places-api
在各种论坛、谷歌和stackoverflow搜索后,我似乎自己找到了一个解决方案,并想到了分享。
每当您链接外部库时,最好通过创建 /lib 文件夹并将这些 .jar 文件转储到那里来链接它(意味着复制文件而不是链接它们)。使用 Eclipse -> Build Properties -> Configure Build path -> Library 选项卡 -> Add external Jars 链接它们。在此添加保存在 /lib 文件夹中的所需 .jar。 (请注意,在 Eclipse 中作为“引用库”包含的 jar 将在 /lib 文件夹中消失!但是,不用担心,因为已经发生了正确的链接。另一个注意事项是检查 /lib jar引用的内容不应在 Build Properties 的 Libraries 选项卡中可见,因为它将被继承。)
另一个主要问题是在使用 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 执行此操作。
干杯!
【讨论】:
这对我有用。我正在使用 Maven,xpp3-1.1.4c 依赖项显示在“Maven 依赖项”下;我不得不使用(右键单击依赖项)Maven->“排除 Maven Artifact...”来排除它。非常感谢 - 这真的很模糊。
【讨论】:
此错误仅在您尝试生成签名 APK 时显示。 有两种方法可以解决此问题。
1.正如在这篇文章中评论的 Amira Elsayed Ismail this 我们应该恢复到 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.
因此,这些依赖项在调试时会被忽略,但 NOT FOR RELEASE。 我通过排除这些依赖项来解决这个问题。
configurations {
all*.exclude group: 'xpp3', module: ['xpp3' ,'httpclient']
}
在此之后,我使用 gradle 3.0.1 成功生成了签名的 APK。(没有还原)。
【讨论】: