2017-10-14 168 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