android-auto-play-opencv アプリ終了時にcashも削除してもらう

01_効率化

備忘録です。マニアックな話なので、片手間に書きます。

最近、更新できていませんが、アプリ操作に熱中しすぎて、ブログ放置してました。

def function():
    package_name = "操作したいアプリのパッケージ名"
    app_class_name = "操作したいアプリのクラス名"
    aapo.start(f"{package_name}{app_class_name}")
    while True:
        capture(aapo)

        tap(aapo, './template/image1.png')
        tap(aapo, './template/image2.png')

        if aapo.chkImg('./template/end.png'):
            aapo.end(package_name)
            break

例えば、上記のようなコードがあったとします。

image1/2とendというpng画像を用意してpythonで操作すると

ログインボーナスくらいは回収できるようなコードになったりするのですが、

こういったコードのaapo.end(package_name)の動作を見ているとcashが残るんですよね。

こういうことを複数のアプリでやるとcashが本当にうざいと思ったので記録を残します。

■キャッシュクリア ※結構消えるので注意

キャッシュクリアができるコードを追加していきます。

ここのend箇所をCtrlを押しながらクリック※pycharmを使用しています。

そうすると、AapoManager.pyというファイルに飛びます。

でもって、赤下線箇所を追加します。以上です。

初心者向けには説明が足りないので補足しますと、上図のend箇所を先ほどの同じようにCtrlを押しながらクリックすると以下のAdblib.pyに飛びます。

endの下にclearがありますね。

要するに、cash削除(clear)機能がここにあるわけです。

以上です。

追記です。

これ実行したら、ログイン情報も飛んで、ログインしなおしが起きました。

ログイン工程が手間でないアプリならやったほうがいいですね。そんなアプリはあんまりないけど

■background動作無効

コマンド一覧見ていても、backgroundのデータ消すのないので、以下を使っていきます。

バックグラウンドでの最適化  |  App quality  |  Android Developers
非明示的ブロードキャストに対する新しい制限。

使用するのはこのコード

$ adb shell cmd appops set <package_name> RUN_IN_BACKGROUND ignore

よくわからんかもしれないが、これはadb.exeでこのコマンド打てばいいってこと、なので、周辺のコードを真似して適当に書くと以下のようになる。

main.py

if aapo.chkImg('./template/image_end.png'):
   aapo.end(package_name)
   aapo.backgraund_clear(package_name)#追加、backgraund_clear関数をつくる

AapoManager.py

def backgraund_clear(self, _package):
   self.adbl.backgraund_clear(_package)

Adblib.py

def backgraund_clear(self, _package):
   subprocess.call([self.adbpath + 'adb', 'shell', 'cmd', 'appops', 'set', _package, 'RUN_IN_BACKGROUND','ignore'])

この状態で実行すると、backgroundの表示が真っ白になって処理が終わりました。

多分問題ないと思うけど、経過観察します。

動作を見ていると、別件が要因かもしれませんが

ファイルパス~python.exe: can’t find ‘__main__’ module in Path ファイルパス

のエラーが出るようになり、少し原因確認のために一時的に無効化中。

方法は間違ってないと思うんだけどな・・?多分インタプリタとかの設定がおかしいと思う。以下参考にさせてもらった記事

python.exe: can't find '__main__' module in Path | bobbyhadz
A step-by-step illustrated guide on how to solve the python.exe: can't find '__main__' module in Path error in Python.

コメント

タイトルとURLをコピーしました