首页 文章

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

提问于
浏览
2

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

意外的顶级异常:java.lang.IllegalArgumentException:已添加:Lcom / google / ads / AdRequest $ Gender;在com.android.dx.mandd(deDeFile.java:161)com.android.dx.command的com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122) .comer.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)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)位于com.android.dx.cf的com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229) . com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)中的direct.ClassPathOpener.processOne(ClassPathOpener.java:158)位于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)在SDKMain.main的java.lang.reflect.Method.invoke(Method.java:483)(SDKMain.java:129)1错误;中止

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

我怎样才能将这些添加到我的APK中?有没有办法做到这一点?

1 回答

  • 0

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

    其次:如果你有两个具有相同类文件的jar,构建系统将只使用它看到的第一个 . 因此,如果您知道您希望运行时使用哪一个,那么解决方案很简单:只需将其放在类路径中 . 或者直观地说 - place it higher in the Order and Export list

    enter image description here

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

相关问题