在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.
我的预感是,三星/摩托罗拉在操作系统中定制了一些与公共库有关的东西。非常感谢任何帮助。
答案 0 :(得分:0)
NoClassDefFoundError
s发生了,因为multidex只是在这个应用中部分实现了 - 出于某种原因,这在Android 5/6上工作正常,但在Android 4.x上它使你的应用程序崩溃{{1}在随机的地方。在我看来,Android Studio应该检测到这种情况,并且应该警告您未正确实施多索支持。
要解决此问题,请确保您的项目符合以下条件:
NoClassDefFoundError
部分中的 multiDexEnabled = true
defaultConfig
在应用类的compile 'com.android.support:multidex:1.0.0'
中致电MultiDex.install()
。
有关multidex的更多详情,请访问here.