最近在给自己的AGI助理写眼睛,开头用requests库,后来发现很多信息是加密的,在引入图形识别和OCR之前,为了便捷处理用了uiautomator https://github.com/xiaocong/uiautomator,发现了几个问题
开头尝试用
try: d('过滤条件').info expect: print('未找到对应控件') |
的方式来监听是否在锁屏界面,后来发现这个代码执行效率非常之低。
无意中发现使用
if d('过滤条件').count==0: print('未找到对应控件') |
的方法,说明count比info效率更高。
另一个性能问题是官方文档带来的:
# get the count of views with text "Add new" on current screen d(text="Add new").count # same as count property len(d(text="Add new")) # get the instance via index d(text="Add new")[0] d(text="Add new")[1] ... # iterator for view in d(text="Add new"): view.info # ... |
其中提到的 for view in d()的方式性能极其低下,似乎每取一个元素都耗费一次I/O,基本一个清单读取都要25-37秒的等待,在发现这个问题后,使用dump()出xml文本,进而逐行进行xml解析,一个list不到1秒就解析完成
def xmlKeyword(file,textBefore,textBehind): eList='' f=open(file) for line in f: beginNum = line.find(textBefore) + len(textBefore) endNum = line.find(textBehind, beginNum) result = line[beginNum:endNum] #过滤条件1,找到末尾元素endNum为-1 if endNum == -1: result='' #过滤条件2,包含文字行过滤,等同文字行过滤 if '包含文字过滤' in result or result=='等同文字1' or result=='相同文字2': result='' print(result) if result != '': eList=eList + result + '\n' f.close() return eList |
中途还尝试了使用uiautomator2,后来由于端口调试问题,需要用到python2.7,最后放弃了这个性能更好的库。
虽然mac里自带了2.x版本的python,但由于之前写过一段时间混编,而且使用配套的视图软件会导致android SDK自带的uiautomatorViewer连接不上手机,还是更换使用uiautomator。
等工具运作起来下一阶段就是在工具的框架上替换升级模块,比如视觉部分可以从ID等升级到图形识别,手和大脑可以考虑升级自我学习,自我编辑验证脚本,能自己写自己代码的AI才是好AI。
关于进展,目前的助理已经可以帮我完成各应用市场联想词的收集,类似市面上ASO100的数据,但由于是助理定制,接下来要写分析和决策模块,目的是解放互联网运营天天盯数据分析数据带来的重复劳动枷锁。
前期还是重决策,希望快速进入决策模块编写,至少为该工具化形态写1000条以上的决策,分析提炼后进入自动化阶段,完成后再抽象思维真正进入AGI阶段。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。