Android の WebView で JavaScript連携をすると落ちる
Android端末を手に入れたので、いくつかプログラムを書いてみた。
と、Webプログラマーをしている私に便利そうな技を発見。
Webブラウザ用に準備されているクラス「WebView」を使って画面表示を作れるという技だ。
※参考にさせて頂いたサイト
http://www.adamrocker.com/blog/172/javascript_android_bridge.html
http://d.hatena.ne.jp/glass-_-onion/20110302/1299071501
この方法を使えば、画面表示の制御は HTML + JavaScriptで、ある主要な処理は Java で書くことができる。
Webプログラムのイメージにかなり近いので、とても私にはわかりやすいし、HTML で画面のレイアウトをデザインできるのも嬉しい。
が、実際にプログラムを書いて実行してみると、JavaScriptからJavaプログラムを読んだ時点で、以下のようなエラーが出て落ちてしまった。
WARN/dalvikvm(370): JNI WARNING: jarray 0x4061b2c0 points to non-array object (Ljava/lang/String;)
ログ上、エラーが発生した箇所は「WebViewCoreThread」の中、「nativeTouchUp」というメソッド内らしい。
どんなにプログラムを書き換えてもうまく動作しないので、四苦八苦しながら試行錯誤したところ、どうやら原因は Android の開発環境にあるらしい。
テスト用プログラムを作って、条件を組み合わせて試してみた結果は以下。
# テストに使ったプログラムも、置いておきます。→WebViewTestActivity
この結果からすると、開発環境(SDK)のバージョンというより、開発したアプリケーションを実行するエミュレータが v2.3.x だと異常終了するようだ。
また、手持ちのAndroid実機(v2.3.3)では、異常終了しないで正常実行できるので、エミュレータ固有の問題と思われる。
今作りたいプログラムに、v2.3.x に固有の機能は含んでいないので、とりあえず v2.2 で開発&デバッグすることにしたけど、v2.3.x に依存するプログラムを作りたい場合は困りそう。
もし、v2.3.x でプログラムを書かざるを得ないなら、v3.0 のエミュレータでデバッグするか、v2.3.x が載っている実機を準備して実機上でデバッグすることになりそうです。
と、Webプログラマーをしている私に便利そうな技を発見。
Webブラウザ用に準備されているクラス「WebView」を使って画面表示を作れるという技だ。
※参考にさせて頂いたサイト
http://www.adamrocker.com/blog/172/javascript_android_bridge.html
http://d.hatena.ne.jp/glass-_-onion/20110302/1299071501
この方法を使えば、画面表示の制御は HTML + JavaScriptで、ある主要な処理は Java で書くことができる。
Webプログラムのイメージにかなり近いので、とても私にはわかりやすいし、HTML で画面のレイアウトをデザインできるのも嬉しい。
が、実際にプログラムを書いて実行してみると、JavaScriptからJavaプログラムを読んだ時点で、以下のようなエラーが出て落ちてしまった。
WARN/dalvikvm(370): JNI WARNING: jarray 0x4061b2c0 points to non-array object (Ljava/lang/String;)
ログ上、エラーが発生した箇所は「WebViewCoreThread」の中、「nativeTouchUp」というメソッド内らしい。
どんなにプログラムを書き換えてもうまく動作しないので、四苦八苦しながら試行錯誤したところ、どうやら原因は Android の開発環境にあるらしい。
テスト用プログラムを作って、条件を組み合わせて試してみた結果は以下。
# テストに使ったプログラムも、置いておきます。→WebViewTestActivity
この結果からすると、開発環境(SDK)のバージョンというより、開発したアプリケーションを実行するエミュレータが v2.3.x だと異常終了するようだ。
また、手持ちのAndroid実機(v2.3.3)では、異常終了しないで正常実行できるので、エミュレータ固有の問題と思われる。
今作りたいプログラムに、v2.3.x に固有の機能は含んでいないので、とりあえず v2.2 で開発&デバッグすることにしたけど、v2.3.x に依存するプログラムを作りたい場合は困りそう。
もし、v2.3.x でプログラムを書かざるを得ないなら、v3.0 のエミュレータでデバッグするか、v2.3.x が載っている実機を準備して実機上でデバッグすることになりそうです。
【送料無料】Android SDK... |
スポンサーサイト
| ホーム |