6

この問題は、複数の小さな問題に分解できます。最終結果として、gdb などのデバッガーを使用して Galaxy Nexus (Android 4.1) デバイスの C/C++ NFC 実装にブレークポイントを設定し、内部状態を調べることができます。

  1. Galaxy Nexus デバイスのライブラリを、デバッグ シンボルを含むライブラリに置き換えることはできますか?
  2. gdb を使用して Android デバイスの C/C++ 実装をデバッグすることはできますか?
  3. Android の NFC 実装をクロスコンパイルすることは可能ですか?
  4. おそらく別のライブラリで誰かが似たようなことを試みている例はありますか?

更新: デバイスのルート化Jellybean のコンパイルは全体的にうまくいきましたが、いくつかの小さなエラーがありました。実際、libnfc makefile には、通信中に大量の出力を可能にする非常に優れたフラグがいくつかあります。

ただし、まだデバッグの問題があります。libnfc (external/libnfc-nxp) をデバッグするには、Nfc Manager (packages/apps/Nfc) である可能性が最も高いライブラリを使用してプロセスに接続する必要があります。アプリケーションをデバッグするには、debuggable フラグを設定する必要があります。Nfc マネージャーを再構築すると、署名がデバイスに既にインストールされている署名と一致しないため、機能しませんadb install -r <file>adb uninstall com.android.nfcどちらも機能しません。apk を単純に削除するという難しい方法を使用すると、新しい apk をインストールしようとすると/system/appエラーが発生します。INSTALL_FAILED_SHARED_USER_INCOMPATIBLEこの時点で、Nfc はまったく機能しなくなり、ストック イメージを再フラッシュする必要がありました。

libnfc ライブラリをデバッグする他のアイデアはありますか?

4

1 に答える 1

10

一般的に、答えはイエスです。完全な Android NFC 実装は、Android オープン ソース プロジェクトの一部です。質問の特定の部分への回答:

  1. はい、システム パーティションを読み取り/書き込みモードでマウントできるようにするには、ブートローダーのロックを解除し、デバイスをルート化する必要があります。これにより、NFC ライブラリを交換できます。
  2. はい、gdb を使用してリモート デバッグを実行できるはずです。私は実際にこれをやったことがありません。
  3. はい、Android ソースをダウンロードして、NFC スタックの関連部分をコンパイルするだけです。関連する部分は、packages/apps/Nfc(NFC マネージャー)、external/libnfc-nxp(C ライブラリ)、frameworks/base/core/java/android/nfc(Java NFC API)、およびvendor/nxp(NFC チップ ファームウェア) にあります。
  4. はい、例えばGDBSERVER を使用して Android でアプリをデバッグする方法を参照してください。またはhttps://www.google.com/search?q=remote+gdb+android。(この質問も関連している可能性があります: Android エミュレーターを使用したリモート デバッグ)
于 2012-08-26T19:58:11.297 に答える