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

时间:2014-07-03 22:26:12

标签: java android eclipse dex dx

在构建适用于Android的APK时,如果您尝试将同一个库添加两次并出现如下错误,则DX工具会失败:

  

意外的顶层例外:java.lang.IllegalArgumentException:   已添加:Lcom / google / ads / AdRequest $ Gender;       在com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)       在com.android.dx.dex.file.DexFile.add(DexFile.java:161)       在com.android.dx.command.dexer.Main.processClass(Main.java:685)       在com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)       在com.android.dx.command.dexer.Main.access $ 600(Main.java:78)       在com.android.dx.command.dexer.Main $ 1.processFileBytes(Main.java:572)       在com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)       在com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)       在com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)       在com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)       在com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)       在com.android.dx.command.dexer.Main.processOne(Main.java:596)       在com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)       在com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)       在com.android.dx.command.dexer.Main.run(Main.java:230)       在com.android.dx.command.dexer.Main.main(Main.java:199)       在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)       在java.lang.reflect.Method.invoke(Method.java:483)       在SDKMain.main(SDKMain.java:129)1错误;中止

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

如何将这些添加到我的APK中?有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

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

其次:如果你有两个具有相同类文件的jar,构建系统将只使用它看到的第一个。因此,如果您知道您希望运行时使用哪一个,那么解决方案很简单:只需将其放在类路径中。或者从视觉上讲 - 把它放得更高 订单和出口清单

enter image description here


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