2016-01-24 89 views
2

在Android應用程序中,我最近開始使用Apache的UrlValidator類來驗證Url。一切都很好!然而,一旦第一輪beta測試開始,我已經收到了這個崩潰從幾個用戶:Apache Commons UrlValidator Android上的NoClassDefFound

Fatal Exception: java.lang.NoClassDefFoundError: org.apache.commons.validator.routines.UrlValidator

UrlValidator通常在build.gradle

compile 'commons-validator:commons-validator:1.5.0' 

這是怎麼回事包括在內?這在我所擁有的所有連接設備上都可以正常工作。測試版測試人員的崩潰來自於Droid Razr HD,Galaxy Tab 2和Galaxy S4,全都運行Android 4.x.

我的預感是三星/摩托羅拉在操作系統中定製了一些與公共圖書館有關的東西。任何幫助深表感謝。

回答

0

NoClassDefFoundError發生了,因爲multidex只在這個應用程序中部分實現 - 出於某種原因,這在Android 5/6上正常工作,但在Android 4.x上,它使得您的應用程序隨機在NoClassDefFoundError處崩潰。在我看來,這種情況應該由Android Studio檢測到,並且應該警告您不恰當地實現了multidex支持。

爲了解決這個問題,請確保以下是爲您的項目真:

  1. 在您的應用程序級的build.gradle

  2. compile 'com.android.support:multidex:1.0.0'在項目層面構建的defaultConfig部分multiDexEnabled = true .gradle

  3. 請致電MultiDex.install()在您的應用程序類的attachBaseContext()。在multidex

更多細節可以發現here.