From b303d2279a5d7d0ca2100e11e77aa23e7951ccd3 Mon Sep 17 00:00:00 2001 From: Air111 <54128005+Air111@users.noreply.github.com> Date: Mon, 29 Apr 2024 00:43:39 +0800 Subject: [PATCH 1/5] Fix: equipment image record in fast PC (#3700) --- module/equipment/equipment_change.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/module/equipment/equipment_change.py b/module/equipment/equipment_change.py index 700c3b594..5f372913c 100644 --- a/module/equipment/equipment_change.py +++ b/module/equipment/equipment_change.py @@ -36,7 +36,19 @@ class EquipmentChange(Equipment): """ logger.info('RECORD EQUIPMENT') self.ship_side_navbar_ensure(bottom=1) + + # Ensure EQUIPMENT_GRID in the right place + skip_first_screenshot = True + while True: + if skip_first_screenshot: + skip_first_screenshot = False + else: + self.device.screenshot() + if self.appear(EQUIPMENT_OPEN): + break + self.equipment_list = {} + info_bar_disappeared = False for index, button in enumerate(EQUIPMENT_GRID.buttons): if index not in index_list: continue @@ -53,11 +65,18 @@ class EquipmentChange(Equipment): # Enter upgrade inform self.ui_click(click_button=UPGRADE_ENTER, check_button=UPGRADE_ENTER_CHECK, skip_first_screenshot=True) + # Save equipment template + if not info_bar_disappeared: + self.handle_info_bar() + info_bar_disappeared = True self.equipment_list[index] = self.image_crop(EQUIP_SAVE) # Quit upgrade inform self.ui_click( click_button=UPGRADE_QUIT, check_button=EQUIPMENT_OPEN, appear_button=UPGRADE_ENTER_CHECK, skip_first_screenshot=True) + else: + logger.info(f"Equipment {index} is empty") + logger.info(f"Recorded equipment index list: {list(self.equipment_list.keys())}") def ship_equipment_take_on_image(self, index_list=range(0, 5), skip_first_screenshot=True): From 30d4ffc644a0097ba33f6c9513aefacef6996db1 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 29 Apr 2024 00:45:40 +0800 Subject: [PATCH 2/5] Fix: _reward_mission_collect() calls should have minimum interval --- module/reward/reward.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/reward/reward.py b/module/reward/reward.py index dd4bde00e..fa8ca6fa3 100644 --- a/module/reward/reward.py +++ b/module/reward/reward.py @@ -66,8 +66,8 @@ class Reward(UI): both 'all' and 'weekly' pages Args: - interval (int): Configure the interval for - assets involved + interval (int, float): + Configure the interval for assets involved Returns: bool, if encountered at least 1 GET_ITEMS_* @@ -179,7 +179,7 @@ class Reward(UI): # Uses no interval to account for # behavior differences and avoid # premature exit - return self._reward_mission_collect(interval=0) + return self._reward_mission_collect(interval=0.2) def reward_mission(self, daily=True, weekly=True): """ From 4cff3e628363f3d4d1099b2c4d99a3822888bd01 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:41:32 +0800 Subject: [PATCH 3/5] Fix: [ALAS] Patch u2.init.appdir in runtime --- module/device/method/utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/module/device/method/utils.py b/module/device/method/utils.py index 4ae0104fe..66181784e 100644 --- a/module/device/method/utils.py +++ b/module/device/method/utils.py @@ -1,3 +1,4 @@ +import os import random import re import socket @@ -5,6 +6,7 @@ import time import typing as t import uiautomator2 as u2 +import uiautomator2cache from adbutils import AdbTimeout from lxml import etree @@ -51,6 +53,9 @@ from module.logger import logger RETRY_TRIES = 5 RETRY_DELAY = 3 +# Patch uiautomator2 appdir +u2.init.appdir = os.path.dirname(uiautomator2cache.__file__) + def is_port_using(port_num): """ if port is using by others, return True. else return False """ From 57d42a14aed50a68bf2e0af86a344a553afe6cdc Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:43:54 +0800 Subject: [PATCH 4/5] Chore: [ALAS] Add method uninstall_uiautomator2 --- module/device/method/uiautomator_2.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/module/device/method/uiautomator_2.py b/module/device/method/uiautomator_2.py index 765f7dde6..c116bce94 100644 --- a/module/device/method/uiautomator_2.py +++ b/module/device/method/uiautomator_2.py @@ -242,6 +242,17 @@ class Uiautomator2(Connection): hierarchy = etree.fromstring(content.encode('utf-8')) return hierarchy + def uninstall_uiautomator2(self): + logger.info('Removing uiautomator2') + for file in [ + 'app-uiautomator.apk', + 'app-uiautomator-test.apk', + 'minitouch', + 'minitouch.so', + 'atx-agent', + ]: + self.adb_shell(["rm", f"/data/local/tmp/{file}"]) + @retry def resolution_uiautomator2(self, cal_rotation=True) -> t.Tuple[int, int]: """ From 152f5b596a97e01cc160657ae368699cf9474a88 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Tue, 30 Apr 2024 00:01:33 +0800 Subject: [PATCH 5/5] Chore: [ALAS] Patch uiautomator2 loggers so they can be logged in Alas --- module/device/method/utils.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/module/device/method/utils.py b/module/device/method/utils.py index 66181784e..b47dc46de 100644 --- a/module/device/method/utils.py +++ b/module/device/method/utils.py @@ -56,6 +56,22 @@ RETRY_DELAY = 3 # Patch uiautomator2 appdir u2.init.appdir = os.path.dirname(uiautomator2cache.__file__) +# Patch uiautomator2 logger +u2_logger = u2.logger +u2_logger.debug = logger.info +u2_logger.info = logger.info +u2_logger.warning = logger.warning +u2_logger.error = logger.error +u2_logger.critical = logger.critical + + +def setup_logger(*args, **kwargs): + return u2_logger + + +u2.setup_logger = setup_logger +u2.init.setup_logger = setup_logger + def is_port_using(port_num): """ if port is using by others, return True. else return False """