我正在该库中编写Android库(.aar)我正在使用.jar库。
为了避免依赖重复我正在使用ShadowJar插件进行重新打包,如下所示:
task shadowJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
System.out.println("Relocating packages...")
relocate 'retrofit' , 'com.codecraft.retrofit'
relocate 'org.simpleframework.xml', 'com.codecraft.org.simpleframework.xml'
relocate 'com.squareup.okhttp' , 'com.codecraft.com.squareup.okhttp'
}
在使用Android库(.aar)的应用程序中,我具有以下所示库的依赖性,仅用于测试我没有依赖项重复问题。
dependencies {
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta1'
}
但是当我尝试在Android上运行应用程序时,我遇到了以下错误
错误:警告:忽略匿名内部的InnerClasses属性 class错误:(com.bea.xml.stream.util.CircularQueue $ 1)但没有 带有错误:关联EnclosingMethod属性。这个班 可能是由一个错误:编译器产生的,没有针对 现代.class文件格式。建议的错误:解决方案是 使用最新的编译器从源代码重新编译类 错误:并且未指定任何“-target”类型选项。该 忽略错误的后果:这个警告就是反思 此类上的操作将错误地错误:指示它是 不是一个内部类。错误:处理“javax / xml / XMLConstants.class”时出错:错误:不明智或错误使用 核心类(java。*或javax。*)错误:不构建核心时 图书馆。错误:这通常是由于无意中包含核心 库文件错误:在应用程序的项目中,使用IDE时 (例如Error:Eclipse)。如果你确定你不是故意的 定义一个错误:核心类,那么这是最可能的解释 什么是错误:继续。错误:但是,您可能真的在尝试 在核心Error:namespace中定义一个类,你的源代码 可能已经采取了错误:来自非Android虚拟机 项目。这将是最大错误:肯定不起作用。至少,它 危害错误:您的应用与未来版本的兼容性 平台。错误:合法性通常也是有问题的。 错误:如果你真的打算建立一个核心库 - 这只是 错误:适合作为创建完整虚拟机的一部分 错误:分发,而不是编译应用程序 - 然后使用 错误:“--core-library”选项可以禁止显示此错误消息。 错误:如果你继续使用“--core-library”但实际上是这样 错误:构建应用程序,然后预先警告您的 应用程序错误:在某些时候仍然无法构建或运行。 请错误:为愤怒的客户做好准备,例如, 您的错误:应用程序升级后停止运行 操作错误:系统。你应该为这个问题负责。 错误:如果您合法地使用恰好位于某个代码中的某些代码 错误:核心包,那么你最简单的安全替代方案是 错误:重新打包该代码。也就是说,将有问题的类移到 错误:您自己的包命名空间。这意味着他们永远不会 错误:与核心系统类冲突。 JarJar可能是一个工具 帮助错误:你在这方面的努力。如果你发现你不能这样做, 然后错误:这表示您所在的路径将会出现 最终错误:导致痛苦,痛苦,悲伤和悲伤。 错误:1错误;中止:app:transformClassesWithDexForDebug FAILED 错误:任务执行失败 ':应用程序:transformClassesWithDexForDebug'。
com.android.build.api.transform.TransformException:java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException
请注意如果我只添加改装依赖项,则不会出现此问题
dependencies {
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
}
我可以解决此错误的原因是什么?
答案 0 :(得分:1)
当你在你的lib或app中包含Jars时 - 你可能包含已经使用不同的java版本或使用不同于你的配置编译的文件,这可能会导致你遇到的问题。
我猜你使用的依赖项是指一个导致jar创建的问题的库。
如果您不使用依赖项至关重要 - 请考虑下载您正在使用的lib的代码(假设它们是开源的并且没有法律限制)并使用您的应用程序将其编译为附加模块你的项目,而不是添加jar。如果你这样做 - 你应该考虑jmols写的关于lib大小和方法计数的内容。
祝你好运!答案 1 :(得分:1)
排除某些模块对我有同样的错误:
compile ('com.squareup.retrofit2:converter-simplexml:2.1.0'){
exclude group: 'xpp3', module: 'xpp3'
exclude group: 'stax', module: 'stax-api'
exclude group: 'stax', module: 'stax'
}
来源link