Skip to content

AppCleaner: Fix ACS failing to match "Clear cache" on VIVO devices running Android 14#1382

Merged
d4rken merged 1 commit into
mainfrom
appcleaner-vivo-clear-cache
Sep 5, 2024
Merged

AppCleaner: Fix ACS failing to match "Clear cache" on VIVO devices running Android 14#1382
d4rken merged 1 commit into
mainfrom
appcleaner-vivo-clear-cache

Conversation

@d4rken

@d4rken d4rken commented Sep 4, 2024

Copy link
Copy Markdown
Member

Previous changes were apparently based on a non-standard VIVO ROM (API34).

Two logs from users with VIVO devices running Android 14 look different.

vivo/V2145_EEA/V2145:14/UP1A.231005.005/compiler08021559:user/release-keys

0: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=5c6cb16
-1: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=373e66d
--2: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/content, pkgName=com.android.settings, identity=ddc82a2
---3: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/content_parent, pkgName=com.android.settings, identity=1fd2b33
----4: className=android.view.ViewGroup, text='null', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/action_bar, pkgName=com.android.settings, identity=cf57c69
-----5: className=android.widget.ImageButton, text='null', isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=7373a1c
-----5: className=android.widget.TextView, text='Speicher', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=dd5478f
-----5: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=2a426ee
----4: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/content_frame, pkgName=com.android.settings, identity=8671ef0
-----5: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=3e07625
------6: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/main_content, pkgName=com.android.settings, identity=2fc3fa
-------7: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/container_material, pkgName=com.android.settings, identity=f68cdab
--------8: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/list_container, pkgName=com.android.settings, identity=b8bdc08
---------9: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/nestedlayout, pkgName=com.android.settings, identity=dc74fa1
----------10: className=androidx.recyclerview.widget.RecyclerView, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/recycler_view, pkgName=com.android.settings, identity=fa625c6
-----------11: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=25e279e
------------12: className=android.widget.RelativeLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header, pkgName=com.android.settings, identity=45d327f
-------------13: className=android.widget.LinearLayout, text='null', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_content, pkgName=com.android.settings, identity=d43295
--------------14: className=android.widget.ImageView, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_icon, pkgName=com.android.settings, identity=4f25738
--------------14: className=android.widget.TextView, text='Instagram', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_title, pkgName=com.android.settings, identity=d9c779b
--------------14: className=android.widget.TextView, text='346.1.0.46.104', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_summary, pkgName=com.android.settings, identity=6011faa
-------------13: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=e4b624c
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=f2951d9
------------12: className=android.widget.Button, text='Speicherinhalt löschen', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/button1, pkgName=com.android.settings, identity=4c0f277
------------12: className=android.view.View, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/divider1, pkgName=com.android.settings, identity=5298c76
------------12: className=android.widget.Button, text='Cache leeren', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/button2, pkgName=com.android.settings, identity=f126311
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=9b82420
------------12: className=android.widget.RelativeLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=f11aee4
-------------13: className=android.widget.TextView, text='Belegter Speicherplatz', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=6291f4d
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=6674723
------------12: className=android.widget.TextView, text='App-Größe', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=483f13
------------12: className=android.widget.TextView, text='224 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=999fa02
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=3ced852
------------12: className=android.widget.TextView, text='Nutzerdaten', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=7756349
------------12: className=android.widget.TextView, text='176 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=dacd550
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=ce844dd
------------12: className=android.widget.TextView, text='Cache', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=6edb96f
------------12: className=android.widget.TextView, text='32,76 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=4b1b44e
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=506b0b4
------------12: className=android.widget.TextView, text='Insgesamt', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=327eb05
------------12: className=android.widget.TextView, text='433 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=c91f67c
-----------11: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=6649987
------------12: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=c78c75a
-1: className=android.view.View, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/statusBarBackground, pkgName=com.android.settings, identity=87c9e84
-1: className=android.view.View, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/navigationBarBackground, pkgName=com.android.settings, identity=895c97

…nning Android 14

Previous changes were apparently based on a non-standard VIVO ROM (API34).

Two logs from users with VIVO devices running Android 14 look different.

> vivo/V2145_EEA/V2145:14/UP1A.231005.005/compiler08021559:user/release-keys

```
0: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=5c6cb16
-1: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=373e66d
--2: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/content, pkgName=com.android.settings, identity=ddc82a2
---3: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/content_parent, pkgName=com.android.settings, identity=1fd2b33
----4: className=android.view.ViewGroup, text='null', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/action_bar, pkgName=com.android.settings, identity=cf57c69
-----5: className=android.widget.ImageButton, text='null', isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=7373a1c
-----5: className=android.widget.TextView, text='Speicher', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=dd5478f
-----5: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=2a426ee
----4: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/content_frame, pkgName=com.android.settings, identity=8671ef0
-----5: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=3e07625
------6: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/main_content, pkgName=com.android.settings, identity=2fc3fa
-------7: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/container_material, pkgName=com.android.settings, identity=f68cdab
--------8: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/list_container, pkgName=com.android.settings, identity=b8bdc08
---------9: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/nestedlayout, pkgName=com.android.settings, identity=dc74fa1
----------10: className=androidx.recyclerview.widget.RecyclerView, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/recycler_view, pkgName=com.android.settings, identity=fa625c6
-----------11: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=25e279e
------------12: className=android.widget.RelativeLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header, pkgName=com.android.settings, identity=45d327f
-------------13: className=android.widget.LinearLayout, text='null', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_content, pkgName=com.android.settings, identity=d43295
--------------14: className=android.widget.ImageView, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_icon, pkgName=com.android.settings, identity=4f25738
--------------14: className=android.widget.TextView, text='Instagram', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_title, pkgName=com.android.settings, identity=d9c779b
--------------14: className=android.widget.TextView, text='346.1.0.46.104', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/entity_header_summary, pkgName=com.android.settings, identity=6011faa
-------------13: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=e4b624c
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=f2951d9
------------12: className=android.widget.Button, text='Speicherinhalt löschen', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/button1, pkgName=com.android.settings, identity=4c0f277
------------12: className=android.view.View, text='null', isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/divider1, pkgName=com.android.settings, identity=5298c76
------------12: className=android.widget.Button, text='Cache leeren', isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/button2, pkgName=com.android.settings, identity=f126311
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=9b82420
------------12: className=android.widget.RelativeLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=f11aee4
-------------13: className=android.widget.TextView, text='Belegter Speicherplatz', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=6291f4d
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=6674723
------------12: className=android.widget.TextView, text='App-Größe', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=483f13
------------12: className=android.widget.TextView, text='224 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=999fa02
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=3ced852
------------12: className=android.widget.TextView, text='Nutzerdaten', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=7756349
------------12: className=android.widget.TextView, text='176 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=dacd550
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=ce844dd
------------12: className=android.widget.TextView, text='Cache', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=6edb96f
------------12: className=android.widget.TextView, text='32,76 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=4b1b44e
-----------11: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=506b0b4
------------12: className=android.widget.TextView, text='Insgesamt', isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings, identity=327eb05
------------12: className=android.widget.TextView, text='433 MB', isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings, identity=c91f67c
-----------11: className=android.widget.FrameLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=6649987
------------12: className=android.widget.LinearLayout, text='null', isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings, identity=c78c75a
-1: className=android.view.View, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/statusBarBackground, pkgName=com.android.settings, identity=87c9e84
-1: className=android.view.View, text='null', isClickable=false, isEnabled=true, viewIdResourceName=android:id/navigationBarBackground, pkgName=com.android.settings, identity=895c97
```
@d4rken d4rken added bug Something isn't working as expected c: AppCleaner Automation Accessibility service related (ACS) api: 34 A14 (Upside Down Cake) Device specific A device specific issue or behavior. labels Sep 4, 2024
@d4rken d4rken merged commit 345c553 into main Sep 5, 2024
@d4rken d4rken deleted the appcleaner-vivo-clear-cache branch September 5, 2024 14:49
@d4rken d4rken added ROM: Funtouch OS Vivo (Global) ROM: OriginOS Vivo (China) labels May 11, 2025
d4rken added a commit that referenced this pull request May 31, 2025
This commit introduces separate automation specifications and labels for FuntouchOS and OriginOS, which were previously grouped under a general "Vivo" category.

Prompted by a change in the recent OriginOS5, the clear cache button is an unclickable textview with a clickable parent layout. Similar to recent FuntouchOS versions but different IDs.

For both FuntouchOS and OriginOS, I've simplified the node action to always look for the clear cache label, and then select that node, or the next clickable parent if available. No more specific ID filtering. Too brittle. Likely unnecessarily specific.

Theoretically a split between both VIVO OSs was not necessary in this change, but is good for the future where more changes will likely become necessary.

Re #1325 #1382

```java
  windowRoot: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=3e3bf2d, bounds=Rect(0, 0 - 1440, 3168)
  -- START -- EventType: TYPE_WINDOW_CONTENT_CHANGED; EventTime: 20639894; PackageName: eu.darken.sdmse; MovementGranularity: 0; Action: 0; ContentChangeTypes: [CONTENT_CHANGE_TYPE_TEXT]; WindowChangeTypes: [] [ ClassName: android.widget.TextView; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; Enabled: true; Password: false; Checked: false; FullScreen: false; Scrollable: false; ImportantForAccessibility: true; AccessibilityDataSensitive: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: 0; ScrollY: 0; MaxScrollX: 0; MaxScrollY: 0; ScrollDeltaX: -1; ScrollDeltaY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null; DisplayId: 0 ]; recordCount: 0
  0: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=f217ce6, bounds=Rect(1440, 0 - 2880, 3168)
  -1: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=346acd4, bounds=Rect(0, 0 - 1440, 3168)
  --2: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=android:id/content pkg=com.android.settings, identity=db85e7d, bounds=Rect(0, 0 - 1440, 3168)
  ---3: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/content_parent pkg=com.android.settings, identity=5f88172, bounds=Rect(0, 0 - 1440, 3168)
  ----4: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/content_frame pkg=com.android.settings, identity=26c09c3, bounds=Rect(0, 0 - 1440, 3168)
  -----5: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=2cbc240, bounds=Rect(0, 0 - 1440, 3168)
  ------6: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/main_content pkg=com.android.settings, identity=3716579, bounds=Rect(0, 0 - 1440, 3168)
  -------7: text='null', class=android.widget.RelativeLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/bbk_zonelist_bottom pkg=com.android.settings, identity=8c942be, bounds=Rect(0, 0 - 1440, 3168)
  --------8: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=android:id/list_container pkg=com.android.settings, identity=8cac26c, bounds=Rect(0, 0 - 1440, 3168)
  ---------9: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/nestedlayout pkg=com.android.settings, identity=119e035, bounds=Rect(0, 0 - 1440, 3168)
  ----------10: text='null', class=androidx.recyclerview.widget.RecyclerView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/recycler_view pkg=com.android.settings, identity=852ccca, bounds=Rect(0, 0 - 1440, 3168)
  -----------11: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=8d2e9b3, bounds=Rect(0, 548 - 1440, 844)
  ------------12: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header pkg=com.android.settings, identity=8743b70, bounds=Rect(0, 548 - 1440, 844)
  -------------13: text='null', class=android.widget.RelativeLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_content pkg=com.android.settings, identity=429d76e, bounds=Rect(80, 548 - 1440, 844)
  --------------14: text='null', class=android.widget.ImageView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_icon pkg=com.android.settings, identity=4399e9c, bounds=Rect(80, 636 - 200, 756)
  --------------14: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=2886e0f, bounds=Rect(248, 617 - 1344, 774)
  ---------------15: text='三星網際網路', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_title pkg=com.android.settings, identity=f9ffc7a, bounds=Rect(248, 617 - 1344, 703)
  ---------------15: text='版本28.0.0.59', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_summary pkg=com.android.settings, identity=38440a5, bounds=Rect(248, 715 - 1344, 774)
  -------------13: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_links pkg=com.android.settings, identity=c399ee9, bounds=Rect(1440, 548 - 1440, 844)
  -----------11: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=902b22, bounds=Rect(80, 844 - 1360, 892)
  ------------12: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=com.android.settings:id/preference_heading pkg=com.android.settings, identity=667dc2b, bounds=Rect(80, 844 - 1360, 892)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=482e0ed, bounds=Rect(80, 892 - 1360, 1093)
  ------------12: text='總共', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=81d4221, bounds=Rect(1576, 958 - 1704, 1044)
  ------------12: text='506.25 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=3900888, bounds=Rect(2485, 966 - 2744, 1036)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=9d8f304, bounds=Rect(80, 1093 - 1360, 1277)
  ------------12: text='應用程式', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=c861007, bounds=Rect(1576, 1142 - 1832, 1228)
  ------------12: text='408.68 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=5216646, bounds=Rect(2480, 1150 - 2744, 1220)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=c083317, bounds=Rect(80, 1277 - 1360, 1461)
  ------------12: text='數據', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=eeadf5d, bounds=Rect(1576, 1326 - 1704, 1412)
  ------------12: text='8.44 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=a612534, bounds=Rect(2543, 1334 - 2744, 1404)
  -----------11: text='null', class=android.view.ViewGroup, clickable=true, checkable=false enabled=true, id=null pkg=com.android.settings, identity=38eb96, bounds=Rect(80, 1461 - 1360, 1662)
  ------------12: text='清除資料', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=8fda0d2, bounds=Rect(1576, 1510 - 1832, 1596)
  -----------11: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=6954ab1, bounds=Rect(80, 1662 - 1360, 1727)
  ------------12: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=com.android.settings:id/preference_heading pkg=com.android.settings, identity=f69a5a3, bounds=Rect(1520, 1662 - 2800, 1727)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=8d79958, bounds=Rect(80, 1727 - 1360, 1928)
  ------------12: text='快取', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=afb1459, bounds=Rect(1576, 1793 - 1704, 1879)
  ------------12: text='89.13 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=f8560a0, bounds=Rect(2527, 1801 - 2744, 1871)
  -----------11: text='null', class=android.view.ViewGroup, clickable=true, checkable=false enabled=true, id=null pkg=com.android.settings, identity=3e2ee3b, bounds=Rect(80, 1928 - 1360, 2129)
  ------------12: text='清除快取', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=2f0f81e, bounds=Rect(1576, 1977 - 1832, 2063)
  --------8: text='null', class=android.widget.LinearLayout, clickable=true, checkable=false enabled=true, id=com.android.settings:id/list_container_footer pkg=com.android.settings, identity=cfb7f1f, bounds=Rect(0, 3168 - 1440, 3168)
  -1: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/bbk_title_view pkg=com.android.settings, identity=5347227, bounds=Rect(0, 0 - 1440, 500)
  --2: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_vtoolbarinternal_container_rom14_0 pkg=com.android.settings, identity=166f8ff, bounds=Rect(1464, 164 - 2856, 500)
  ---3: text='null', class=android.widget.ImageButton, clickable=true, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_navigation_view_rom14_0 pkg=com.android.settings, identity=83f9d15, bounds=Rect(1464, 240 - 1648, 424)
  ----4: text='null', class=android.widget.ImageButton, clickable=true, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_navigation_view_btn_rom14_0 pkg=com.android.settings, identity=830782a, bounds=Rect(1464, 240 - 1648, 424)
  ---3: text='儲存空間', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_normal_title_rom14_0 pkg=com.android.settings, identity=cefe6cc, bounds=Rect(1656, 295 - 1912, 370)
```
d4rken added a commit that referenced this pull request Jun 1, 2025
This commit introduces separate automation specifications and labels for FuntouchOS and OriginOS, which were previously grouped under a general "Vivo" category.

Prompted by a change in the recent OriginOS5, the clear cache button is an unclickable textview with a clickable parent layout. Similar to recent FuntouchOS versions but different IDs.

For both FuntouchOS and OriginOS, I've simplified the node action to always look for the clear cache label, and then select that node, or the next clickable parent if available. No more specific ID filtering. Too brittle. Likely unnecessarily specific.

Theoretically a split between both VIVO OSs was not necessary in this change, but is good for the future where more changes will likely become necessary.

Re #1325 #1382

```java
  windowRoot: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=3e3bf2d, bounds=Rect(0, 0 - 1440, 3168)
  -- START -- EventType: TYPE_WINDOW_CONTENT_CHANGED; EventTime: 20639894; PackageName: eu.darken.sdmse; MovementGranularity: 0; Action: 0; ContentChangeTypes: [CONTENT_CHANGE_TYPE_TEXT]; WindowChangeTypes: [] [ ClassName: android.widget.TextView; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; Enabled: true; Password: false; Checked: false; FullScreen: false; Scrollable: false; ImportantForAccessibility: true; AccessibilityDataSensitive: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: 0; ScrollY: 0; MaxScrollX: 0; MaxScrollY: 0; ScrollDeltaX: -1; ScrollDeltaY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null; DisplayId: 0 ]; recordCount: 0
  0: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=f217ce6, bounds=Rect(1440, 0 - 2880, 3168)
  -1: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=346acd4, bounds=Rect(0, 0 - 1440, 3168)
  --2: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=android:id/content pkg=com.android.settings, identity=db85e7d, bounds=Rect(0, 0 - 1440, 3168)
  ---3: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/content_parent pkg=com.android.settings, identity=5f88172, bounds=Rect(0, 0 - 1440, 3168)
  ----4: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/content_frame pkg=com.android.settings, identity=26c09c3, bounds=Rect(0, 0 - 1440, 3168)
  -----5: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=2cbc240, bounds=Rect(0, 0 - 1440, 3168)
  ------6: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/main_content pkg=com.android.settings, identity=3716579, bounds=Rect(0, 0 - 1440, 3168)
  -------7: text='null', class=android.widget.RelativeLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/bbk_zonelist_bottom pkg=com.android.settings, identity=8c942be, bounds=Rect(0, 0 - 1440, 3168)
  --------8: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=android:id/list_container pkg=com.android.settings, identity=8cac26c, bounds=Rect(0, 0 - 1440, 3168)
  ---------9: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/nestedlayout pkg=com.android.settings, identity=119e035, bounds=Rect(0, 0 - 1440, 3168)
  ----------10: text='null', class=androidx.recyclerview.widget.RecyclerView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/recycler_view pkg=com.android.settings, identity=852ccca, bounds=Rect(0, 0 - 1440, 3168)
  -----------11: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=8d2e9b3, bounds=Rect(0, 548 - 1440, 844)
  ------------12: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header pkg=com.android.settings, identity=8743b70, bounds=Rect(0, 548 - 1440, 844)
  -------------13: text='null', class=android.widget.RelativeLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_content pkg=com.android.settings, identity=429d76e, bounds=Rect(80, 548 - 1440, 844)
  --------------14: text='null', class=android.widget.ImageView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_icon pkg=com.android.settings, identity=4399e9c, bounds=Rect(80, 636 - 200, 756)
  --------------14: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=2886e0f, bounds=Rect(248, 617 - 1344, 774)
  ---------------15: text='三星網際網路', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_title pkg=com.android.settings, identity=f9ffc7a, bounds=Rect(248, 617 - 1344, 703)
  ---------------15: text='版本28.0.0.59', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_summary pkg=com.android.settings, identity=38440a5, bounds=Rect(248, 715 - 1344, 774)
  -------------13: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/entity_header_links pkg=com.android.settings, identity=c399ee9, bounds=Rect(1440, 548 - 1440, 844)
  -----------11: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=902b22, bounds=Rect(80, 844 - 1360, 892)
  ------------12: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=com.android.settings:id/preference_heading pkg=com.android.settings, identity=667dc2b, bounds=Rect(80, 844 - 1360, 892)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=482e0ed, bounds=Rect(80, 892 - 1360, 1093)
  ------------12: text='總共', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=81d4221, bounds=Rect(1576, 958 - 1704, 1044)
  ------------12: text='506.25 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=3900888, bounds=Rect(2485, 966 - 2744, 1036)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=9d8f304, bounds=Rect(80, 1093 - 1360, 1277)
  ------------12: text='應用程式', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=c861007, bounds=Rect(1576, 1142 - 1832, 1228)
  ------------12: text='408.68 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=5216646, bounds=Rect(2480, 1150 - 2744, 1220)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=c083317, bounds=Rect(80, 1277 - 1360, 1461)
  ------------12: text='數據', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=eeadf5d, bounds=Rect(1576, 1326 - 1704, 1412)
  ------------12: text='8.44 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=a612534, bounds=Rect(2543, 1334 - 2744, 1404)
  -----------11: text='null', class=android.view.ViewGroup, clickable=true, checkable=false enabled=true, id=null pkg=com.android.settings, identity=38eb96, bounds=Rect(80, 1461 - 1360, 1662)
  ------------12: text='清除資料', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=8fda0d2, bounds=Rect(1576, 1510 - 1832, 1596)
  -----------11: text='null', class=android.widget.LinearLayout, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=6954ab1, bounds=Rect(80, 1662 - 1360, 1727)
  ------------12: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=com.android.settings:id/preference_heading pkg=com.android.settings, identity=f69a5a3, bounds=Rect(1520, 1662 - 2800, 1727)
  -----------11: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=null pkg=com.android.settings, identity=8d79958, bounds=Rect(80, 1727 - 1360, 1928)
  ------------12: text='快取', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=afb1459, bounds=Rect(1576, 1793 - 1704, 1879)
  ------------12: text='89.13 MB', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/summary pkg=com.android.settings, identity=f8560a0, bounds=Rect(2527, 1801 - 2744, 1871)
  -----------11: text='null', class=android.view.ViewGroup, clickable=true, checkable=false enabled=true, id=null pkg=com.android.settings, identity=3e2ee3b, bounds=Rect(80, 1928 - 1360, 2129)
  ------------12: text='清除快取', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/title pkg=com.android.settings, identity=2f0f81e, bounds=Rect(1576, 1977 - 1832, 2063)
  --------8: text='null', class=android.widget.LinearLayout, clickable=true, checkable=false enabled=true, id=com.android.settings:id/list_container_footer pkg=com.android.settings, identity=cfb7f1f, bounds=Rect(0, 3168 - 1440, 3168)
  -1: text='null', class=android.widget.FrameLayout, clickable=false, checkable=false enabled=true, id=com.android.settings:id/bbk_title_view pkg=com.android.settings, identity=5347227, bounds=Rect(0, 0 - 1440, 500)
  --2: text='null', class=android.view.ViewGroup, clickable=false, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_vtoolbarinternal_container_rom14_0 pkg=com.android.settings, identity=166f8ff, bounds=Rect(1464, 164 - 2856, 500)
  ---3: text='null', class=android.widget.ImageButton, clickable=true, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_navigation_view_rom14_0 pkg=com.android.settings, identity=83f9d15, bounds=Rect(1464, 240 - 1648, 424)
  ----4: text='null', class=android.widget.ImageButton, clickable=true, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_navigation_view_btn_rom14_0 pkg=com.android.settings, identity=830782a, bounds=Rect(1464, 240 - 1648, 424)
  ---3: text='儲存空間', class=android.widget.TextView, clickable=false, checkable=false enabled=true, id=com.android.settings:id/originui_vtoolbar_normal_title_rom14_0 pkg=com.android.settings, identity=cefe6cc, bounds=Rect(1656, 295 - 1912, 370)
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: 34 A14 (Upside Down Cake) Automation Accessibility service related (ACS) bug Something isn't working as expected c: AppCleaner Device specific A device specific issue or behavior. ROM: Funtouch OS Vivo (Global) ROM: OriginOS Vivo (China)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant