2010-11-20 7 views
1

私は絶望的な状況にあります。デバッガなしのデバイスでAndroidアプリケーションをデバッグ

私はネットブックでUbuntu 10.04のEclipseでADTを使用してAndroidアプリケーションを開発しています。

残念ながら、ネットブックは、デバイスエミュレータを実行するのに十分なほど強力ではありません。次に、オンデバイスをデバッグしようとしましたが、残念ながら私の電話(Pulse)に問題があるようです。

私はデバッグできないようです。私はすでにそれを働かそうと数時間を費やしてきました。そして、私は今netbook/mobileをアップグレードする余裕がない。

私ができる唯一のことは、Eclipseで開発して電話でアプリケーションを実行することです。
アプリケーションが携帯電話で実行されている間にデバッグできる方法はありますか?エラー/警告のあるログや、コードに書かれたカスタムメッセージまで作成することはできますか?

どのような状況ですか。

ご協力いただければ幸いです。

おかげで、
ダン

+0

あなたの電話シェルにアクセスするのに少なくとも 'adb shell 'を実行できますか? (btw私はエミュレータが実際には低速ネットブックで使用できないことを確認できます) –

+0

確認のためのAlexandreありがとうございました。はい、私はadbシェルを実行できます。うわー、私はそれについて知らなかった。私はドル記号でプロンプトを出し、私はls、pwd、...を起動することができますどのようにこれを使用してデバッグできますか?コマンドラインで任意のログにアクセスできますか?問題は私が根になることができないということです。 – dan

答えて

2

デバイスのデバッグで動作するはずです。アプリケーションマニフェストにandroid:debuggable="true"があることを確認してください。私は以前、デバイスをリブートした後に自分自身を修正したデバッグの問題を抱えていました。

また、the Log classを使用してログメッセージを出力することもできます。これらは、adb logcatを実行するか、Eclipseのlogcatビューで表示できます。

編集:

いくつかのデバイス上でロギングを有効にするadb shellからecho 1 > /sys/kernel/logger/log_main/enableを実行する必要があることと思われます。

+0

彼らはどちらも良い提案ですが、誰もそのトリックをしていません – dan

+0

今私はadb logcatを試してみようとしています – dan

+0

残念ながら、adb logcatは私にとってはうまくいきません。多分私はちょうど間違った方法でそれを使用した。私のプログラムでは、Log.v( "MYAPP"、 "hello!")を追加しました。その後、アプリケーションを電話にロードして実行しました。私のUbuntuから、私はadb logcatを起動しましたが、何も表示されませんでした。プロンプトがちょうど点滅します。 – dan

0

SDKに含まれているDDMSというツールを使用して、アンドロイドアプリケーションを直接デバッグすることができます。 Eclipseでは、プラグインがすべてのことをインテグレートします。マージンをダブルクリックして停止したい行にブレークポイントを作成し、「デバッグ」ボタン(ウィンドウ上部の小さなバグ)を押します。プログラムはデバイス上で起動し、デバイスは「デバッガが接続するのを待っています」というメッセージを表示します。メッセージは数秒で消え、ブレークポイントを置いた行で停止します。

ログを作成するためとして、あなたはandroid.util.Logクラスを使用することができます。

import android.util.Log; 
... 
Log.e("MYAPPLICATION", "my message"); 

これは、Eclipseの「Logcat」ビューに表示されるはずです。

+0

私は言ったように、デバイス上のデバッグを行うことができなくても、デバイス上でapkを実行することはできますか? – dan

+0

Logクラスは設定に関係なく動作します。アプリケーションをインストールすることができれば、ログに書き込まれます。デバイスにログを表示できるアプリケーションがありますが、logcatを備えた開発マシン上で見るのがはるかに便利です。今、apkをインストールできますが、アプリケーションをデバッグしたり、デバイスに直接ログインしたりできない場合は、何か間違っているため、SDKのインストール方法を調べてください。それはまたデバイスかもしれません - 私はそれが遅いですが、ただadb logcatが動作するかどうかを見るためにエミュレータで一度それを試してみてください。そうであれば、デバイスに問題があります。 – Jean

0

デバイスでデバッグできない理由はわかりません。あなたのデバイスがUbuntuによって認識されていることを確認するには、articleに従ってください。

+0

私はそれを(そして他の多くの)試みましたが、パルスはいくつかの問題を抱えているようです。私はフォーラムでそれを読んだ。これらの問題を回避するには、コードを変更した後でadbを再コンパイルする必要がありますが、簡単には聞こえません – dan

1

Android搭載端末では、Androidアプリケーションの開発とデバッグを、エミュレータと同じように行うことができます。

1 Androidマニフェストでアプリケーションを「デバッグ可能」と宣言してください。 要素へのandroid:debuggable = "true"

2非市場アプリケーションのインストールを許可するようにデバイスを設定します。

デバイスで、[設定]> [アプリケーション]に移動し、[不明なソース]を有効にします(Android 4.0デバイスの場合、設定は[設定]> [セキュリティ]にあります)。

3デバイスの「USBデバッグ」をオンにします。

デバイスで、[設定]> [アプリケーション]> [開発]に移動し、USBデバッグを有効にします(Android 4.0デバイスの場合、設定は[開発者オプション]にあります)。

4デバイスを検出するようにシステムを設定します。 Windowsで開発している場合は、adb用のUSBドライバをインストールする必要があります。 Androidデベロッパー向け電話(ADP)、Nexus One、またはNexus Sをお使いの場合は、Google Windows USB Driverをご覧ください。それ以外の場合は、OEM USBドライバのマニュアルで該当するOEMドライバへのリンクを参照してください。 Mac OS Xで開発している場合は、動作します。このステップを飛ばす。 Ubuntu Linuxで開発する場合、開発に使用するデバイスの種類ごとにUSB設定を含むudev rulesファイルを追加する必要があります。 rulesファイルでは、各デバイスの製造元は、ATTR {idVendor}プロパティで指定された一意のベンダーIDによって識別されます。ベンダーIDのリストについては、下記の「USBベンダーID」を参照してください。 Ubuntu Linuxでデバイス検出を設定するには rootとしてログインし、次のファイルを作成します。/etc/udev/rules.d/51-android.rules

 Use this format to add each vendor to the file: 
     SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" 

     In this example, the vendor ID is for HTC. The MODE assignment specifies read/write permissions, and GROUP defines which Unix group owns the device node. 

     Note: The rule syntax may vary slightly depending on your environment. Consult the udev documentation for your system as needed. For an overview of rule syntax, see this guide to writing udev rules. 
     Now execute: 
     chmod a+r /etc/udev/rules.d/51-android.rules 

SDK platform-tools /ディレクトリからadbデバイスを実行すると、デバイスが接続されていることを確認できます。接続されている場合は、デバイス名が「デバイス」として表示されます。

Eclipseを使用している場合は、いつものようにアプリケーションを実行またはデバッグしてください。使用可能なエミュレータと接続されているデバイスを一覧表示するDevice Chooserダイアログが表示されます。アプリケーションをインストールして実行するデバイスを選択します。

Androidデバッグブリッジ(adb)を使用している場合は、接続されたデバイスをターゲットにするために-dフラグを付けてコマンドを発行できます。

関連する問題