java - 在 APK 中包含具有相同包名和名称的类

标签 java android eclipse dex dx

在为 Android 构建 APK 时,如果您尝试两次添加相同的库,DX 工具会失败并出现如下错误:

UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: already added: Lcom/google/ads/AdRequest$Gender; at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122) at com.android.dx.dex.file.DexFile.add(DexFile.java:161) at com.android.dx.command.dexer.Main.processClass(Main.java:685) 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.processDirectory(ClassPathOpener.java:229) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158) 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) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at SDKMain.main(SDKMain.java:129) 1 error; aborting

如果我有 2 个不同的库(jar),其中包含具有相同包名和名称的类怎么办?

如何将这些添加到我的 APK 中?有什么办法可以做到这一点吗?

最佳答案

首先请注意,即使两个 jar 不在同一个项目中,也可能会弹出“已添加”错误。例如:将您的项目链接到包含具有相同类的 jar 的库项目。

其次:如果您确实有两个具有相同类文件的 jar,则构建系统将仅使用它看到的第一个 jar。因此,如果您知道希望运行时使用其中哪一个,解决方案很简单:只需将其放在类路径的前面即可。或者从视觉上来说 - 将其放置在更高的位置 订单和导出列表:

enter image description here


第三:如果你确实没有其他办法,你可以随时打开一个jar文件(例如使用 WinRAR )并删除它的一些类文件。

关于java - 在 APK 中包含具有相同包名和名称的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24564187/

相关文章:

android - 电话响起时暂停歌曲

java - 使用 Documents4j 将 Excel 转换为 PDF 问题

java - Java中的静态方法和静态变量存储在哪里?

android - 尝试编译 native 代码时出现权限问题

eclipse - 收集要安装的项目时出错 : osgi. bundle,org.eclipse.sdk,4.2.0.v201206081400

android - 无法从 sdk 导入示例项目

eclipse - 为什么 Eclipse 在本地主机端口 13405 上运行 Web 应用程序?

java - 要求用户仅重试三个答案之一? (java)

java - 获取最后插入记录的主键

java - 需要帮助在使用基本适配器的 ListView 上设置点击事件