Android上的Apache Commons UrlValidator NoClassDefFound

时间:2016-01-24 01:17:34

标签: android apache-commons url-validation

在Android应用中,我最近开始使用Apache的UrlValidator课来验证Urls。一切都很棒!但是,一旦第一轮beta测试开始,我就会收到一些用户的崩溃:

  

致命异常:java.lang.NoClassDefFoundError:   org.apache.commons.validator.routines.UrlValidator

UrlValidator通常包含在build.gradle

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

这里发生了什么?这对我拥有的所有nexus设备都完全正常。来自beta测试者的崩溃来自Droid Razr HD,Galaxy Tab 2和Galaxy S4,都运行Android 4.x.

我的预感是,三星/摩托罗拉在操作系统中定制了一些与公共库有关的东西。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

NoClassDefFoundError s发生了,因为multidex只是在这个应用中部分实现了 - 出于某种原因,这在Android 5/6上工作正常,但在Android 4.x上它使你的应用程序崩溃{{1}在随机的地方。在我看来,Android Studio应该检测到这种情况,并且应该警告您未正确实施多索支持。

要解决此问题,请确保您的项目符合以下条件:

    应用级build.gradle的NoClassDefFoundError部分中的
  1. multiDexEnabled = true

  2. 项目级build.gradle中的
  3. defaultConfig

  4. 在应用类的compile 'com.android.support:multidex:1.0.0'中致电MultiDex.install()

  5. 有关multidex的更多详情,请访问here.