Skip to main content

3 posts tagged with "安卓"

View All Tags

· 3 min read
老陈

🏊🏻‍♂️安装好环境之后, 我们便可以去尝试一下写代码

一定要实操实操

一般来说, 我们首先需要了解python的基本语法, 如果是小白也不用担心, 我们人类最好的学习方式就是模仿, 先照猫画虎对着已有的工程做, 然后再慢慢理解改动, 任何事物都是从感性认识再到理性认识的🌋.

接着我们了解引擎提供了什么封装好的自动化相关函数(即引擎函数), 安卓相关函数给我们用, 🤔思考怎样用自动化函数实现核心的点击功能

对于定位, 我们有图色与控件定位🔫, 如果可以使用控件定位🔫, 那是比图色要稳定很多, 不用考虑分辨率问题, 并且脚本的维护性也很高

我们所说的图色包括了ocr, ocr对于艺术文字的识别率不高, 对于大部分游戏来说, 都是艺术字体, ocr识别几乎无效

如果我们的脚本包括千变万化的人物角色或者一些复杂的半透明图片, 那图像识别和ocr识别也是无效的, 我们需要使用深度学习技术的yolo来识别定位到我们的目标

当然, 如果用控件定位, 虽然我们没有使用无障碍功能, 但是仍然可能被一些app风控到, 因为获取控件的时候系统会回调到app

🤠对于脚本开发, 我们往往是一个功能,一个操作一个操作地来写, 然后像搭积木一样搭起来的

🤓对于一些系统类的任务性操作, 我们可以使用shell

😋如果我们需要用到更复杂的功能, 我们就用三方库, 比如联网请求功能

🤤如果我们需要调用安卓代码, 比如我们要实现安卓的通讯录写入, 我们可以使用python调用java功能

😇久而久之, 我们代码写多了, 就会慢慢形成很多模版, 可以快速写出很复杂的脚本, 只需要填图填控件即可

· One min read
老陈

假如我的脚本开发机的屏幕分辨率是1080x2400, 我们可以等比缩放坐标, 以提高脚本的兼容性。

def scal_pos_1080_2400(x, y) -> (int, int):
"""
对于纵向(portrait)屏幕坐标的缩放
"""
return int(screen._dw * x / 1080), int(screen._dh * y / 2400)

def scal_pos_2400_1080(x, y) -> (int, int):
"""
对于横向(landscape)屏幕坐标的缩放
"""
return int(screen._dh * x / 2400), int(screen._dh * y / 1080)


click(100, 100) # 全分辨率兼容不好
click(*scal_pos_1080_2400(100, 100)) # 全分辨率兼容好

· One min read
老陈

必要资源


硬件配备

32G + 内存, 2060+ 英伟达显卡

操作步骤

1.准备好数据集, 使用labelme进行标注, 并转换为coco数据集

2.把yolov5 源码下载到本地电脑磁盘

3.查看训练yaml配置, 自己模仿写一个

4.查看数据集配置, 自己模仿写一个

5.开始训练

6.转换导出pt模型到onnx

7.onnx转换为ncnn

8.进行ncnn optimize优化

9.编辑ncnn(optimize)模型中的param文件, 如下图

使用Yyds.Auto加载模型

# 加载模型
model_yolo_reload("example.bin", "example.param")
# 以当前屏幕为目标, 进行前向推导计算
screen_yolo_locate()