web-dev-qa-db-ja.com

デバイスでデバッグするときに「ソースコードがバイトコードと一致しません」

APIレベル21に対してコンパイルしているアプリがあります: enter image description here

aPIレベル23の実際のデバイスでデバッグします。

enter image description here

問題は、Android OS自体のクラスを介してデバッグしようとすると、「ソースコードがバイトコードと一致しません」というメッセージが表示されることです。なんでこんなことが起こっているの?アプリが実行されているテストデバイスはAPIレベル23であり、デバッグされるソースファイルもレベル23です。 *enter image description here*

私は本当に混乱しています。このメッセージが表示される理由と修正方法を説明できる人はいますか?

57
Crocodile

AOSPにはこれに関する未解決の問題があり、一部のユーザーは可能な解決策を提供しています: https://code.google.com/p/Android/issues/detail?id=225199&sort=-id&colspec=ID%20Type% 20Status%20Owner%20Summary%20Stars

そこに与えられた潜在的な解決策は(この投稿の日付の時点で)です:

  • [ビルド]-> [クリーン]をクリックします
  • 設定->ビルド、実行、展開で、インスタント実行を無効にします
29

ここに私の解決策があります

複数のバージョンライブラリを取得している場合は、役立つことがあります。

  1. libソースコードにブレークポイントを設定します
  2. コードをブレークポイントまで実行させます
  3. あなたはこのヒントを得ます

    enter image description here

  4. 矢印アイコンをクリックします

  5. あなたはこれを手に入れます

    enter image description here

  6. ダブルクリックして正しいライブラリを選択します(通常、最高バージョンのライブラリが正しいです)

    誤って「無効」ボタンをクリックした場合、デバッガ設定で有効にすることができます

enter image description here

手順3のヒントがまだない場合は、設定オプションを確認したかどうかを確認できます。

10
Magic

CompileSdkVersionと同じAPIレベルのAndroidエミュレーターを使用する必要があります。あなたの場合、APIレベル21のAndroidエミュレータを使用する必要があります。

8
Uriel Frankel

Gradleを使用している場合、おそらくGradleキャッシュの問題です。 ( 参照 )。悲しいかな、たとえ走っても

gradle --refresh-dependencies

、それは本当にすべての依存関係を更新していません。いくつかのゴミが残っています。 ( 参照 )。

そのため、最も確実な(しかし抜本的で長い)バリアントは、[user] /。gradle/cachesから内部をすべてクリアすることです。または、そこで問題のプロジェクトを見つけて、そのキャッシュのみをクリアします。

4
Gangnus

Bluetooth Low Energy(BLE)を使用したアプリケーションで作業中に、ここで示したソリューションを試しました。私は試した、

  1. クリーンビルド
  2. インスタントランを無効にしました
  3. キャッシュの無効化/再起動

これらはすべて失敗しました。

私がやったことは、警告を受けていると思ったポイントをデバッグすることでしたが、まだ警告は出ましたが、アプリケーションは正常に動作していました。警告は無視できます。

1
Asjad Sohail

おそらく、このエラーメッセージには複数の原因が考えられます。私の場合はOPの場合とは異なります。私の場合、これは追加のライブラリを必要とするサードパーティのライブラリが原因でした。

たとえば、X.jarを手動でLIBに追加しますが、このX.jarを機能させるにはZ.jarが必要です。

理解するのに時間がかかりましたが、メッセージはまったく役に立ちませんでした。クラッシュするクラスに到達するまでアプリをデバッグする必要がありました。そのクラスでは、すべてのインポートが満たされていることを確認してください。

(特定:MercadoLibre-0.3.4.jarを追加しました。これにはcommons-httpclient.jarが必要でした)

お役に立てれば!

0

これは、ProGuardを有効にしている場合にも発生する可能性があります。 buildTypesで、minifyEnabled false、shrinkResources false、useProguard falseを設定します

0

[プロジェクトの設定]> [アーティファクト]に移動します。問題のあるアーティファクトを選択します。 「プロジェクトビルドに含める」オプションがあります。これをチェックする(有効にする)必要があります。 IntelliJの古いバージョンでは、このオプションは「ビルド時に作成」です。

0
Swathi