【问题标题】:Apache Commons UrlValidator NoClassDefFound on AndroidAndroid 上的 Apache Commons UrlValidator NoClassDefFound
【发布时间】:2016-01-24 01:17:34
【问题描述】:

在一个 Android 应用程序中,我最近开始使用 Apache 的 UrlValidator 类来验证 URL。一切都很好!但是,在第一轮 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。

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

【问题讨论】:

    标签: android apache-commons url-validation


    【解决方案1】:

    NoClassDefFoundErrors 发生是因为 multidex 仅在此应用中部分实现 - 出于某种原因,这在 Android 5/6 上运行良好,但在 Android 4.x 上它会使您的应用在随机位置出现 NoClassDefFoundError 崩溃.在我看来,Android Studio 应该会检测到这种情况,并且应该警告您您未正确实现 multidex 支持。

    要修复它,请确保您的项目满足以下条件:

    1. multiDexEnabled = true 在您的应用级 build.gradle 的 defaultConfig 部分中

    2. compile 'com.android.support:multidex:1.0.0' 在您的项目级 build.gradle 中

    3. 在您的应用程序类的attachBaseContext() 中调用MultiDex.install()

    更多关于multidex的详情可以查看here.

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 2013-08-12
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 2017-02-04
      • 2023-01-29
      • 2019-05-20
      • 1970-01-01
      相关资源
      最近更新 更多