2014-07-03 48 views
2

当构建一个APK(Android版)的DX工具的情况下,失败尝试与一个错误,因为这两次添加相同的库相同的包和名称类:包括在APK

意外TOP-LEVEL EXCEPTION:java.lang.IllegalArgumentException: 已添加: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) 在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) 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) 在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) 在融为一体。 android.dx.command.Main.main(Main.java:103) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect .DelegatingMe thodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:483) 在SDKMain.main(SDKMain.java:129)1个误差;堕胎

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

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

回答

0

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

其次:如果你有两个罐子用相同的类文件生成系统将只使用它看到的第一个。所以,如果你知道你想让你的运行时使用哪一个,那么解决方案很简单:只需将它放在类路径中即可。或视觉上讲 - 将其放入 较高的订单和导出列表

enter image description here


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

+0

这与我的问题有何关系?我想创建一个包含我的代码+ 2个外部库的APK。每个库都有一个以相同名称(和包)定义的类。在DX期间,这将失败(我发布了错误)。如何克服这一点? –