2011-12-06 8 views
6

Javaを使用してアンドロイドでメソッドswizzlingを行うことは可能ですか?私はシステムメソッドを傍受し、そのパラメータを記録して、それを正常に処理したいと思っています。Javaを使用したAndroidのメソッドSwizzling

答えて

3

どのような環境でもJavaを使用することはできません。

多分、AOPを使用して同様の結果を得ることができます。

しかし、これで何ができるかはAndroidでは限られています。 Aspect-oriented programming in androidを参照してください。実際には、ターゲットコード(システムメソッド)をコンパイルしないので、コンパイル時の織り方(Androidで使用できるすべてのものと思われる)は、このケースでは役に立たないでしょう。この答えと同じように私は思います。

もう1つの考え方...私はあなたが一貫してこのロギングをしたいと思います。しかし、問題をデバッグするためにこれが必要な場合は、conditional breakpoint in Eclipseを使用して問題をデバッグすることができます。

条件式は、任意のJavaコードを含むことができ、 にブレークポイント条件は、トレースのような機能を実装できるように、複数の文が含まれていてもよいです。たとえば、条件文で を実行してから、( "System.out.println(...); falseを返す")を中止しないようにハードコードされた値を返すことができます。

Android SDKのメソッドで動作するかどうかは特に分かりません。しかし、Java SDKのメソッドで動作します。例えば、ここで簡単なコードは次のとおりです。

System.err.println("foo"); 

私はこのように、PrintStream.printで条件付きブレークポイントを作った:

:プログラムでのデバッグが、このとき

System.err.println("hello: " + arg0); 
return false; 

とコンソール出力

hello: foo 
foo 

JDKはデバッグシンボルでコンパイルされていないため、メソッドパラメータを名前で参照することはできませんが、arg0..argnを使用することに注意してください。

+0

これはandroid sdkのapiメソッドにも当てはまりますか? –

関連する問題