備忘録です。マニアックな話なので、片手間に書きます。
最近、更新できていませんが、アプリ操作に熱中しすぎて、ブログ放置してました。
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のデータ消すのないので、以下を使っていきます。

使用するのはこのコード
$ 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 ファイルパス
のエラーが出るようになり、少し原因確認のために一時的に無効化中。
方法は間違ってないと思うんだけどな・・?多分インタプリタとかの設定がおかしいと思う。以下参考にさせてもらった記事


コメント