Stethoも1.2.0となり、さまざまな便利機能が使えるようになっています*1。
1.2.0の大きな新機能として、Chrome Developer ToolsのConsoleからアプリの内部状態を操作できるようになりました。まず、以下のようにstetho-js-rhinoが必要です。
debugCompile 'com.facebook.stetho:stetho:1.2.0' debugCompile 'com.facebook.stetho:stetho-js-rhino:1.2.0'
グローバルな状態にアクセスするのは簡単で、たとえばFQNを使うと次のようにできます:
> com.github.gfx.helium.BuildConfig.VERSION_NAME < "2.1.0-debug"
importPackage(name)
でクラス名のみで参照するようにもできます。 Javaのimport name.*
に相当します。
> importPackage(com.github.gfx.helium) > BuildConfig.VERSION_NAME < "2.1.0-debug"
REAMDEにあるとおり、グローバル変数として context
があるのでtoastも作れます。
importPackage(android.widget); importPackage(android.os); var handler = new Handler(Looper.getMainLooper()); handler.post(function() { Toast.makeText(context, "Hello from JavaScript", Toast.LENGTH_LONG).show() });
いまはこれ以上のことはできなそうですが、JS側に変数や関数を登録するAPIがあるので、たとえばアプリ側で適切に「現在のactivity」などをJSから参照するようにはできそうです。
ただそれをするとアプリのコードを汚すことになるので、Stethoのためにそこまでする必要があるかどうかは微妙ですが。