24

「アプリケーションが予期せず停止しました」という件名の他の多くの質問とは異なり、特定の問題のトラブルシューティングを求めているわけではありません。

むしろ、単純な Android アプリケーションを開発 (およびデバッグ) するために膨大な量の情報を消化するというこの手ごわいタスクに Android/Eclipse/Java 新人が取り組むための最良の戦略の概要を求めています。

私の場合、SDK からサンプル スケルトン アプリを取得し、少し変更を加えて実行したところ、何が得られましたか?

アプリケーション (process.com.example.android.skeletonapp) が予期せず停止しました。もう一度やり直してください。

わかりました。LogCat を確認する必要があることはわかっています。それは私を見つめているタイムスタンプ付きの行でいっぱいです... 私は今何をしますか? 何を探す必要がありますか?

アプリをクラッシュさせるステートメントを見つけるために、プログラムをシングルステップする方法はありますか? (Java プログラムは絶対にクラッシュしないと思っていましたが、どうやら間違っていたようです)

ブレークポイントを配置するにはどうすればよいですか?

これ以外の Android デバッグチュートリアルをオンラインでお勧めできますか?

4

5 に答える 5

16

私も Eclipse/Android の初心者ですが、簡単なデバッグ プロセスが役立つことを願っています...

Eclipse でブレークポイントを設定するには、ブレークしたい行の横を右クリックし、[ブレークポイントの切り替え] を選択します。そこから、標準の「実行」ではなく「デバッグ」を選択すると、ステップスルーなどが可能になります。LogCat が提供するフィルター (チュートリアルで参照) を使用して、すべての出力を処理するのではなく、必要なメッセージを対象にすることができます。これは (うまくいけば) エラーを理解するのに大いに役立ちます。

他の優れたチュートリアルについては、自分でいくつか探しましたが、まだ宝石を見つけることができませんでした.

于 2011-02-23T23:23:29.770 に答える
9

ログをエラーのみにフィルターし、FATAL EXCEPTION を探します。

于 2011-02-23T23:14:18.377 に答える
4

Eclipse の「デバッグ」パースペクティブ内で Logcat 表示を使用すると、行が色分けされます。通常は赤で表示されるため、アプリがクラッシュした原因を簡単に見つけることができます。

Java (または Dalvik) 仮想マシンがクラッシュすることはありませんが、プログラムが例外をスローしてそれをキャッチしない場合、VM はプログラムを終了させます。これが「クラッシュ」です。

于 2011-02-23T23:32:38.400 に答える
0

アプリに必要な権限があるかどうかを確認してください。私も同じエラーが発生していたので、logcat デバッグ ログを確認すると、次のことが示されていました。

04-15 13:38:25.387: E/AndroidRuntime(694): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:555-555-5555 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44068640 694:rahulserver.test/10055} (pid=694, uid=10055) requires android.permission.CALL_PHONE

次に、android-manifest で必要な許可を与えました。

于 2012-04-15T08:17:04.313 に答える
-2
  1. ホーム画面から、メニューキーを押します。
  2. リスト項目
  3. [設定] をタッチします。
  4. [アプリケーション] をタッチします。
  5. [アプリケーションの管理] をタッチします。
  6. すべてをタッチします。
  7. 問題が発生しているアプリケーションを選択します。
  8. 利用可能な場合は、[データを消去] と [キャッシュを消去] をタップします。これにより、アプリが新品のようにリセットされ、アプリに保存されている個人データが削除される場合があります。
于 2012-11-25T01:01:02.287 に答える