6

https://android.googlesource.com/platform/dalvik/+/gingerbread/docs/hello-world.htmlの Hello World の例を試しています

しかし、私の Foo プログラムは実行されませんでした。dalvikvm は次のことについて不満を述べました。

Dalvik VM はクラス 'Foo' を見つけることができません java.lang.NoClassDefFoundError: dalvik.system.NativeStart.main(Native Method) の Foo /foo.jar] で dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) で java.lang.ClassLoader.loadClass(ClassLoader.java:573) で java.lang.ClassLoader.loadClass(ClassLoader.java:532) で... あともう1つ

Logcat は、dalvikvm の呼び出し中に詳細情報を提供しました。

D/dalvikvm(1361): instr 幅テーブルを作成しています E/dalvikvm(1361): dex キャッシュを開けません '/data/dalvik-cache/mnt@sdcard@foo.jar@classes.dex': そのようなファイルまたはディレクトリはありませんI/dalvikvm(1361): /mnt/sdcard/foo.jar のキャッシュを開いたり作成したりできません (/data /dalvik-cache/mnt@sdcard@foo.jar@classes.dex) W/dalvikvm(1361): threadid =1: キャッチされない例外で終了するスレッド (group=0x4 001e9a8)

私が何を間違えたか知っている人はいますか?

4

2 に答える 2

10

この記事の著者である Andy McFadden がヒントを教えてくれます。

/data/dalvik-cache に .odex ファイルを作成しようとしています。root として実行するか、保護されていない /data/dalvik-cache を用意する必要があります。

デバイスを root 化すると (例: SuperOneClick を使用)、うまくいきました!


@domen によるコメント: 実際には root である必要はありません。ANDROID_DATA 環境変数を設定すると、そこにキャッシュが配置されます。すなわちmkdir /data/local/tmp/dalvik-cacheexport ANDROID_DATA=/data/local/tmp

于 2011-05-27T16:26:07.857 に答える
0

SDカードからjarファイルとして実行しようとしているようです。apk ファイルとしてビルドするには、ツールを使用する必要があります。これにより、Java バイトコードから Dalvik コードに変換され、ファイルの内容が再編成されます。

于 2011-05-27T01:44:59.280 に答える