「NoxPlayer」+「UWSC」を使ってスマホゲームのマクロを使っている時にアプリが落ちた場合の対策はしていたのですが、アプリがフリーズして止まっていた場合の対策をしていなかったのでその方法を備忘録を兼ねて書いていきます。フリーズ以外にも通信エラーで止まっている場合などとにかくアプリが動いていない状態を検知するようにしておけばこの方法で「NoxPlayer」を再起動させてアプリを立ち上げることができます(マクロの詳細なコードは出てきません)。「BlueStacks」の場合は以下の記事に記載しています

使っているマクロは画像判定してループせさているのでアプリが落ちてもホームにあるアイコンから復帰させていたんですが、フリーズしていた場合はそのまま止まってしまいます
まず最初にフリーズしているかどうかを調べる必要があります。方法は色々ありますが私は基本ループの中に画像が取得できない回数を数えて一定以上画像が取得できない状態が続いたら、「NoxPlayer」を再起動してアプリを立ち上げる処理をかいたbatファイルを読み込みますようにしました
Noxに標準でついているadbを利用するのでbatファイルの中身はすごく単純です
- D:
- Nox.exe -clone:Nox_1 -quit
- timeout /T 1 /nobreak
- start Nox.exe -clone:Nox_1
- timeout /T 20 /nobreak
- Nox.exe -clone:Nox_1 -package:××××
簡単に説明すると1行目のD:は私が「NoxPlayer」をDドライブにインストールしているので書いています。Cドライブにインストールしている場合は不要です
2行目で「NoxPlayer」を終了します。「Nox.exe -clone:Nox_1」となっているのは「NoxPlayer」本体ではなく追加したAndroid7のエミュレーターを使用しているためです。この番号はマクロを使用するエミュレーターの番号に変えて下さい。Noxマルチインスタンスマネージャーを開くとエミュレーターに番号が振られています
3行目は「NoxPlayer」終了後1秒待つようにしています。たぶん必要ないです
4行目で「NoxPlayer」のAndroid7のエミュレーターを起動しています。最初の「start」を入れないと4行目で処理が止まることがあるのでいれています
5行目は新たに立ち上がった「NoxPlayer」でホーム画面が出てくるまで20秒待機しています。ここで待ち時間を入れておかないと次の6行目のアプリ起動が上手くできないので「NoxPlayer」が立ち上がる時間を見ておいて余裕をもって待機時間を入れておく方がいいです。裏でマクロを動かしている場合は「nobreak」を入れておかないと何かキーを入力したら待機時間が残っていても次の行にいくので入れておいたほうが良いです
6行目で「NoxPlayer」のAndroid7のエミュレーターに入っているアプリを起動させます。「-package:」の後の×××はアプリのパッケージ名を入れます
このbatファイルをフリーズした時に読み込むようにしておけば「NoxPlayer」を自動で再起動してくれます。後は「UWSC」の方で周回を再開させるようにコードを書いておけばまたマクロで周回してくれるようになります
もう一つの方法も記載しておきます。こちらの方が「UWSC」を起動するので使いやすいかも知れません。私の場合はUWSCのマクロコードで、batファイル読み込み後にexitexitでUWSCを終了させています
- Nox.exe -clone:Nox_1 -quit
- timeout /T 5 /nobreak
- start “” “D:\Program Files\Nox\Nox\bin\Nox.exe” -clone:Nox_1 -package:xxx
- timeout /T 30 /nobreak
- “D:\uwsc5302\UWSC.exe” “D:\uwsc5302\マクロ.uws”
先程とほとんど変わりませんが、3行目でNoxの起動とアプリの起動を行い、5行目でマクロファイルを読み込んでいます。例として載せていますので該当フォルダまでのフルパスは自身の環境に合わせて下さい
今回は備忘録なので簡単な説明しかしていないですが、「NoxPlayer」でアプリがフリーズしてマクロが止まって困っている方は参考にしてみて下さい
コメント