2017-10-14 142 views
0

我是Android开发新手。在普通的EE Java和Gradle中不是很新颖。Android应用程序依赖关系ClassNotFoundException

所以我想为Android构建一个REST消费者应用程序。我有一个(1).jar文件,我将需要(包含DTO和api消费者)。那(1).jar依赖于来自Nexus回购的其他(2)罐子。这些(2)确实取决于来自maven回购站的其他(3)罐子(例如apache commons lang3等)。

有趣的是,该应用程序编译和安装就好了。但是在运行时偶尔会倾向于从(1)中丢失一些类(至少(1) - 不知道(2)和(3))。

我知道SO不喜欢图片的问题,但在这种情况下,我相信图片=清晰度。

见下文。相同的运行时,相同的jar。除了其中一个类没有加载,另一个类坐在它旁边,可用。

Some classes are not seen by the classloader

And some are seen

为什么会这样呢?我做错了什么?

还有一件事...如果我尝试在主活动(在onCreate()内)中实例化一个缺失类(有多个),有时该类出现在类路径中并创建一个对象。但是,听起来很荒谬,因为听起来其他一些班人失踪了!感觉像Classloader对于它可能可以处理的类有有限的插槽数量。

编辑: 好吧,它会好起来的。看起来,由于某种原因,gradle决定不将(1).jar中的一些文件包含到生成的.apk文件中... 任何想法为什么?

Gradle 4.1。 Linux Mint 18. Android Studio 3.0 Canary 8

左 - 反编译APK结构;正确 - 原装瓶子 enter image description here

回答

0

也许,您已启动ProGuard。 ProGuard从最后的.apk中删除未使用的类。 ProGuard

+0

'minifyEnabled'设置为'false'。试图评论整个'释放'块 - 仍然没有运气 – netikras