AutoGod:一款拥有AI视觉的安卓自动化框架
一、背景
在安卓自动化领域,传统方案存在几个痛点:
- 元素定位脆弱:UI改版后脚本失效
- 兼容性差:不同设备需适配多套脚本
- 安全性低:脚本容易被反编译
Auto God通过AI视觉识别 + VMP混淆引擎,重新定义了安卓自动化。
二、核心技术架构
2.1 多引擎OCR识别
支持三种识别引擎,根据场景灵活切换:
// 切换引擎
$ocr.v("ncnn"); // 速度最快,适合实时识别
$ocr.v("mlkit"); // 准确率高,兼容性好(默认)
$ocr.v("ppv5"); // 支持中英文+特殊字符
// 初始化
$ocr.init();
// 灰度化识别(速度提升30%-50%)
var options = {
region: [0, 0, 500, 300],
gray: true
};
var result = $ocr.detect(options);
if (result.isSuccess()) {
var lines = result.getLines();
for (var i = 0; i < lines.size(); i++) {
console.log(lines.get(i).getText());
}
}
2.2 YOLO目标检测
支持YoloV5-V13全系列:
var yolo = $yolo.create(8); // 创建YoloV8
// 配置参数
yolo.setUseGpu(true); // GPU加速
yolo.setSize(640, 640); // 输入尺寸(必须32的倍数)
yolo.setProbThreshold(0.5); // 置信度阈值
// 加载自定义模型
// yolo.loadModel("/sdcard/custom.model");
// 执行检测
var img = $img.capture();
var detections = yolo.detect(img);
// 处理结果
for (var i = 0; i < detections.length; i++) {
var det = detections[i];
console.log("标签: " + det.label +
" 位置: (" + det.x + "," + det.y + ")" +
" 置信度: " + det.confidence);
}
2.3 扩展库加载
支持加载Dex、Jar、Apk、So文件:
// 加载单个dex文件
$ext.loadDex("/sdcard/custom.dex");
// 加载多个dex文件
$ext.loadDexs(["/sdcard/lib1.dex", "/sdcard/lib2.dex"]);
// 加载jar文件
$ext.loadJar("/sdcard/library.jar");
// 加载apk文件
$ext.loadApk("/sdcard/plugin.apk");
// 加载带so库的dex
var options = {
path: ["/sdcard/custom.dex"],
so: [
{path: "/sdcard/libnative.so", load: true}
]
};
$ext.loadDex(options);
三、应用场景
3.1 自动化测试
// 测试用例:登录流程
function testLogin() {
// 识别并点击登录按钮
var loginBtn = $ocr.getPoint("登录", {
region: [0, 0, 1080, 500]
});
if (loginBtn == null) {
console.log("测试失败:登录按钮未找到");
return false;
}
$act.click(loginBtn);
sleep(1000);
// 验证登录结果
var result = $ocr.line({
region: [0, 200, 1080, 400],
gray: true
});
if (result.indexOf("欢迎") !== -1) {
console.log("测试通过");
return true;
}
return false;
}
testLogin();
3.2 游戏自动化
// 初始化:创建并缓存YOLO对象
var storage = $storage.create("game_config");
var yoloId = storage.getStr("yolo_id", null);
if (yoloId == null || !$yolo.has(yoloId)) {
var yolo = $yolo.create(8);
yolo.setUseGpu(true);
yolo.setSize(640, 640);
storage.putStr("yolo_id", yolo.getId());
}
// 使用:获取缓存的YOLO对象
var yolo = $yolo.get(storage.getStr("yolo_id"));
// 检测游戏目标
var screenImg = $img.capture();
var targets = yolo.detect(screenImg);
// 点击目标
for (var i = 0; i < targets.length; i++) {
$act.click(targets[i].x, targets[i].y);
sleep(500);
}
3.3 企业级RPA
// 自动填写表单
function fillForm(data) {
// 填写姓名
var nameField = $ocr.getPoint("姓名");
if (nameField) {
$act.click(nameField);
$act.input(data.name);
}
// 填写电话
var phoneField = $ocr.getPoint("电话");
if (phoneField) {
$act.click(phoneField);
$act.input(data.phone);
}
// 提交
var submitBtn = $ocr.getPoint("提交");
if (submitBtn) {
$act.click(submitBtn);
}
}
var formData = {
name: "张三",
phone: "13800138000"
};
fillForm(formData);
四、安全机制
4.1 VMP混淆引擎
脚本在执行前会编译成混淆码:
- 函数名加密
- 字符串加密
- 字段混淆
- 无法还原源码
4.2 云端验证
- 非对称加密传输
- 本地+云端双校验
- 防离线破解
五、并发编程支持
// 多线程截图(Auto God支持并发)
function task1() {
var img1 = $img.capture();
// 处理图片...
}
function task2() {
var img2 = $img.capture();
// 处理图片...
}
// 两个线程可以同时截图,互不干扰
var thread1 = new Thread(task1);
var thread2 = new Thread(task2);
thread1.start();
thread2.start();
六、总结
Auto God的优势:
- ✅ AI视觉识别,无需固定坐标
- ✅ 多引擎支持,灵活切换
- ✅ VMP混淆,安全性高
- ✅ 并发编程,稳定可靠
- ✅ 扩展性强,支持第三方库