2

プロジェクト内に複数のパッケージを含むアプリケーションを開発しました...それらのパッケージの 1 つのクラスがコードの最初の行ですぐに呼び出され、恐ろしい java.lang.NoClassDefFoundError エラーがスローされます...私はしませんパッケージは単にプロジェクト内にあり、Android 1.6 デバイスでは正常に動作しますが、1.5 デバイスでは動作しません...プロジェクトはもともと 1.6 用に設定されていたと言わざるを得ませんが、その後、マニフェスト内を 4 から 3 に変更しました...それは悪い習慣ですか? それとも、プラットフォームのバージョンとは関係ありませんか?

また、DDMS からこれらの行も取得します。

05-04 17:24:59.921: WARN/dalvikvm(2041): VFY: unable to resolve static field 2 (MANUFACTURER) in Landroid/os/Build;
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY:  rejecting opcode 0x62 at 0x0034
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY:  rejected ***/android/managementModule/Management;.getDeviceSpecifics ()V
05-04 17:24:59.921: WARN/dalvikvm(2041): Verifier rejected class ***/android/managementModule/Management;

これは、デバイス自体のいくつかの情報フィールドを取得しようとする ManagementModule です... 繰り返しますが、これは 1.6 デバイスで問題なく動作しますが、これは開発デバイスですが、私の 1.5 デバイスは非開発デバイスです...

4

1 に答える 1

1

ベリファイアは 1.5 と 1.6 の間であまり変化がなかったので、どちらでも同じように満足するか不満足であるはずです。(>= 2.0 では、クラス全体を拒否する代わりに、フィールドが最初に使用された時点で NoSuchFieldError をスローします。)

Build.MANUFACTURER フィールドが Android 1.5 ("Cupcake") に存在しなかったことが問題のようです。1.6(「ドーナツ」)で導入されたと思います。

于 2010-05-04T20:53:52.627 に答える