1

Eclipse Juno を使用して ADT v21 でコードを実行しようとすると、次のエラーが発生します。

[2013-05-28 10:08:39 - XYZ] Dx    
EXCEPTION FROM SIMULATION:  
[2013-05-28 10:08:39 - XYZ] Dx local 000c: invalid   

[2013-05-28 10:08:39 - XYZ] Dx ...at bytecode offset 00000c80   
locals[0000]: Lcom/sec/x/y/z;   
locals[0001]: I  
locals[0002]: I  
locals[0003]: Landroid/content/Intent;  
locals[0004]: Ljava/lang/String;  
locals[0005]: invalid  
locals[0006]: Ljava/lang/String;   
locals[0007]: invalid  
locals[0008]: invalid  
locals[0009]: invalid  
locals[000a]: invalid  
locals[000b]: Ljava/lang/String;  
locals[000c]: invalid  
locals[000d]: invalid  
locals[000e]: invalid  
locals[000f]: invalid 
locals[0010]: invalid 
locals[0011]: invalid 
...while working on block 0c80  
...while working on method onActivityResult IILandroid/content/Intent V   
...while processing onActivityResult (IILandroid/content/Intent V  
...while processing com/sec/x/y/z.class  

[2013-05-28 10:09:05 - XYZ] Dx 1 error; aborting   
[2013-05-28 10:09:05 - XYZ] Conversion to Dalvik format failed with error 1

このプロジェクトは、ADT v20 以下で完全にビルドされます。しかし、ADT v21 では一貫して同じエラーが発生します。ビルド段階ではエラーは発生しません。Eclipse を使用してアプリケーションを実行しようとすると発生します。

これに関連する何千ものスレッドを読みました。そして、それらのどれも機能していません。これは確かに「クリーン/ビルド」の問題ではありません。私には、EclipseまたはProguardの問題のようです。私はこれで私の人生の約12時間を無駄にしました. 誰か私を救ってください。これについて何か手がかりがある人はいますか?

4

4 に答える 4

3

「ローカルが無効です... Dalvik 形式への変換がエラー 1 で失敗しました」は、ProGuard の最適化ステップが原因である可能性があり、ローカル変数に関するデバッグ情報とコードの最適化との一貫性を常に維持できるとは限りません。

  • このデバッグ情報を保持しないことで回避できます (-keepattributes LocalVariableTable を指定しないでください)。
  • 最適化を無効にすることで回避できます (proguard-project.txt に -dontoptimize を追加します)。
  • 最新バージョンの ProGuard で問題が解決するかどうかを確認できます (android-sdk/tools/proguard/lib/proguard.jar をProGuardサイトの最新バージョンに置き換えます)。
  • ProGuard の最新バージョンに更新しても問題が解決しない場合は、バグを報告できます。
于 2013-05-29T22:28:24.830 に答える
0

私はそれを自分で解決しました。onActivityResult (このエラーがスローされた場所) では、ある場所で整数変数を初期化していませんでした。それを初期化することで、問題は解決しました。とても奇妙です。誰かがこれを適切に説明できる場合は、彼/彼女の答えをお勧めします。

前:

int x;

int x = 0;

それでおしまい!

于 2013-05-29T00:58:50.860 に答える
0

Eclipseは、ローカル変数を使用する前に初期化することを認識できなかったと思います。そのため、コードの作成中にユーザーに警告を表示しません。しかし、adt はファイルのコンパイルに失敗しました。TanDroiD によると、変数を初期化すると問題は解決します。

于 2013-12-11T03:57:28.040 に答える