アプリはエミュレーターで正常に動作しますが、電話にインストールした後、起動するたびにクラッシュし、logcatはエラーを表示しません。
このようなことが起こったとき、私は何をすべきですか?
あなたの問題をより簡単に解決するための私の提案:
電話のデバッグモードで日食からアプリを実行します。デバッグモードで実行されます。ほとんどの場合、より多くのデバッグ出力が得られます。
デバッグモードをオンにすると(注:これは、参照している「ADB接続」ではありません)、アプリケーションのログをさらに有効にし、通常はガベージコレクションを実行しません。
(アプリケーションがデバッグモードで動作するように強制されている場合は、[デバッグ接続を待機しています]ダイアログが表示されます)。
例:非同期スレッドの実行を継続し、実行を停止しません。あなたのケースには粗雑で無関係です。しかし、ほんの一例です。
したがって、電話のアプリケーションはデバッグモードで実行されるように強制されるため、特定のスレッドまでの詳細なエラーを含むlogcatを取得します。
ただし、デバッグモードは、Eclipseの「名前を付けてデバッグ」実行構成と組み合わせて使用する場合に適しています。また、そのデバッグアプリケーションモードが自動的にオンになることを覚えておいてください(ダイアログボックスもあります)。logcatは詳細を表示し、さらに発生したエラーの発生順序でブレークポイントを表示します。
アレスが言ったことに関して 、プロセスのデバッグを直接行いたい場合は、
追加のヒント:
huawei電話では、電話がデフォルトのシステム設定になっている場合、logcatはデバッグメッセージと例外を表示しません。
Huawei電話でlogcatフルログを有効にするには、次の手順を実行する必要があります。
*#*#2846579#*#*
プロジェクトメニュー/背景設定/ログ設定に移動します
古い電話の場合:ログの可用性(ログスイッチ)とレベル(ログレベルの設定)を定義します。
Devices
Eclipseでは、DDMSに移動し、パネルでデバイスの名前またはandroid.osをクリックする必要があります。そして、デバイスをデバッグモードにします。
ホストコンピューターから離れている場合でも、電話にログファイルを表示できるAndroidSystemInfoなどのツールをインストールします。
Androidがまったく痕跡を残さないことは非常に珍しいことです。
あなたのアプリはおそらく電話が持っていない機能(例えばカメラまたはgpsまたはnfc)を必要としますか?
独自のログを作成して、クラッシュの原因となるコードのブロックを追跡するか、単にデバッグします。
エミュレータを再起動し、ビルドをクリーンアップしました。これは、私が持っていた非ロギングとスプリアスクラッシュの両方を取り除きました