5

Monkeyを使用してアプリをデバッグしているときに(これは本物とほぼ同じくらい楽しいです)、なんとかクラッシュしました!ええ、それが目的ですよね?

ログを見て(そして見ている間)、Monkeyが時々やっていることに気づきました:

:Sending Flip keyboardOpen=true

これは私の問題の一部のようです。これが発生すると、エミュレータの画面は90度回転しますが、これはKEYPAD_7を押した場合の通常の回転とは異なります。これが写真です:

異常な画面の向き

エミュレーターがキーボードの開口部(フリップ)をエミュレートしているように見えますが、これは回転とは微妙に異なります。

したがって、問題は次のとおりです。自分でそれをエミュレートするにはどうすればよいですか。確かに、Monkeyを実行するのは適切ですが、keyboardOpenメッセージの送信をランダムに選択するのを待つことはプログラムをデバッグする方法ではありません。

4

1 に答える 1

2

たぶん、を使用し--pct-majornavてサルを「メジャー」ナビゲーションイベントのみに制限します(キーボードの変更は「メジャー」であると想定していますが、よくわかりません)。

異なるが類似したmonkeyrunnerフレームワークに基づいて特定のテストを作成することも検討できます:http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html ...しかし、注入する方法がわかりませんキーボードフリップコード。

私はこの関連するSOの質問を見つけました: エミュレーターでハードウェアキーボードの開閉をシミュレートしますが、そこにある「答え」は混乱を招き、不十分なようです。

実際にはあなたの質問ではありませんが、あなたの根本的な問題に関連しています:

マニフェストファイルの「android:configChanges」セクションに「keyboardHidden」を含めるのを忘れましたか?(または、それを含めましたが、構成変更コールバックを処理しませんか?)

キーボードの非表示/表示により、アクティビティが再開されます。その再起動を処理することを宣言するか、処理しない場合は、OSが停止してアプリ自体を再起動します。

http://developer.android.com/guide/topics/resources/runtime-changes.htmlを参照してください

アップデート

これがmonkeyアプリケーションのキーボードフリップイベントのソースであると思います。キーボードフリップイベントの挿入は比較的簡単なようです。/dev/input/input0を開き、16の魔法のバイトを書き込みます。

また、ソースには、キーボードのフリップレートを制御するための文書化されていない--pct-flipオプションがあるようです:link

于 2011-10-14T17:57:10.713 に答える