2

最近、Android アプリで Apache のUrlValidatorクラスを使用して Url を検証し始めました。すべてがうまく機能します!しかし、ベータ テストの最初のラウンドが開始されると、数人のユーザーからこのクラッシュが発生しました。

致命的な例外: java.lang.NoClassDefFoundError: org.apache.commons.validator.routines.UrlValidator

UrlValidator通常は含まれていますbuild.gradle

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

何が起きてる?これは、私が所有するすべての nexus デバイスで完全に正常に動作します。ベータ テスターに​​よるクラッシュは、すべて Android 4.x を実行している Droid Razr HD、Galaxy Tab 2、Galaxy S4 によるものでした。

私の推測では、Samsung/Motorola が OS で何かをカスタマイズしており、それはコモンズ ライブラリと関係があります。どんな助けでも大歓迎です。

4

1 に答える 1

0

NoClassDefFoundErrormultidex がこのアプリに部分的にしか実装されていないため、s が発生していました。何らかの理由で、これは Android 5/6 では正常に動作しますが、Android 4.x ではランダムな場所でアプリがクラッシュしますNoClassDefFoundError。この状況は Android Studio によって検出されるべきであり、multidex サポートを不適切に実装したことを警告する必要があるように私には思えます。

これを修正するには、プロジェクトが次の条件を満たしていることを確認してください。

  1. multiDexEnabled = truedefaultConfigアプリレベルの build.gradleのセクションで

  2. compile 'com.android.support:multidex:1.0.0'プロジェクトレベルのbuild.gradleで

  3. Application クラスをMultiDex.install()呼び出します。attachBaseContext()

multidex の詳細については、こちらを参照してください。

于 2016-01-25T20:15:52.387 に答える