AutoJs6 中文文档 下载 App

项目管理 — 多脚本协作与模块组织

单脚本 vs 项目

AutoJs6 支持两种组织方式:

方式特点适用场景
单脚本(.js 文件)独立、简单小型自动化、一次性脚本
项目(文件夹)多文件、可打包复杂应用、需要资源文件

创建项目

  1. 在 AutoJs6 主界面点击右下角 + 号
  2. 选择「项目」
  3. 填写项目信息:
  1. 确认创建

项目目录结构

myProject/
├── script.json          ← 项目配置文件(自动生成)
├── main.js              ← 入口脚本(自动生成)
├── utils.js             ← 工具模块(你自己创建)
├── config.js            ← 配置模块
├── resources/           ← 资源目录
│   ├── icon.png         ← 图标
│   ├── background.jpg   ← 背景图
│   └── templates/       ← 模板图片
│       ├── btn_login.png
│       └── btn_cancel.png
└── ui/                  ← UI 布局文件(可选)
    └── main_ui.js

script.json 项目配置

每个项目根目录都有一个 script.json 配置文件:

{
    "name": "MyAutoApp",
    "packageName": "com.example.myauto",
    "versionName": "1.0.0",
    "versionCode": 1,
    "main": "main.js",
    "mainActivity": "main.js",
    "theme": "Auto",
    "icon": "resources/icon.png"
}

配置项说明

字段说明默认值
name项目名称必填
packageName包名(打包 APK 用)必填
versionName版本名(显示给用户)"1.0.0"
versionCode版本号(递增)1
main入口脚本"main.js"
mainActivity启动 Activity 的脚本和 main 相同
theme应用主题"Auto"
icon应用图标路径无

项目内文件引用

require — 加载其他脚本

// main.js 中引用 utils.js
let utils = require("./utils.js");
utils.helperFunction();

// 引用子目录中的脚本
let helper = require("./helpers/network.js");

资源文件引用

// 相对项目根目录
let imgPath = "./resources/icon.png";

// 在 UI 中引用
ui.layout(
    <img src="./resources/background.jpg" w="*" h="*"/>
);

// 在 images 模块中引用
let template = images.read("./resources/templates/btn_login.png");

模块导出

// utils.js — 工具模块
function formatDate(d) {
    return d.toLocaleDateString();
}

function sleepRandom(min, max) {
    let ms = Math.random() * (max - min) + min;
    sleep(ms);
}

// 导出函数
module.exports = {
    formatDate: formatDate,
    sleepRandom: sleepRandom
};
// main.js — 使用工具模块
let utils = require("./utils.js");

console.log(utils.formatDate(new Date()));
utils.sleepRandom(500, 2000);

项目 vs 文件夹

AutoJs6 会自动识别项目目录:

// 项目目录(有 script.json) —— 支持打包 APK
// myProject/
//   ├── script.json  ← 关键标识
//   └── main.js

// 普通文件夹(无 script.json) —— 只是脚本集合
// myScripts/
//   ├── script1.js
//   └── script2.js

实战:组织一个签到自动化项目

autoCheckIn/
├── script.json
├── main.js              ← 入口:调用各平台签到
├── platforms/
│   ├── weibo.js         ← 微博签到
│   ├── baidu.js         ← 百度签到
│   └── zhihu.js         ← 知乎签到
├── resources/
│   ├── templates/
│   │   └── checkin_btn.png   ← 签到按钮模板图
│   └── credentials.json      ← 账号信息
└── utils.js             ← 通用工具(找图、延时、日志)

main.js

// 加载各平台签到模块
let weibo = require("./platforms/weibo.js");
let baidu = require("./platforms/baidu.js");
let zhihu = require("./platforms/zhihu.js");
let utils = require("./utils.js");

"ui";

ui.layout(
    <vertical padding="16">
        <text text="自动签到" textSize="24sp" gravity="center"/>
        <button id="runAll" text="一键全部签到" marginTop="32"/>
        <button id="runWeibo" text="微博签到"/>
        <button id="runBaidu" text="百度签到"/>
        <button id="runZhihu" text="知乎签到"/>
    </vertical>
);

ui.runAll.click(async () => {
    ui.runAll.setEnabled(false);
    ui.runAll.setText("执行中...");
    
    await weibo.checkIn();
    await baidu.checkIn();
    await zhihu.checkIn();
    
    ui.runAll.setEnabled(true);
    ui.runAll.setText("一键全部签到");
    toast("全部完成");
});

ui.runWeibo.click(() => weibo.checkIn());
ui.runBaidu.click(() => baidu.checkIn());
ui.runZhihu.click(() => zhihu.checkIn());

platforms/weibo.js

// 微博签到模块
let utils = require("../utils.js");

module.exports = {
    async checkIn() {
        toast("微博签到开始...");
        
        // 打开微博
        app.launchApp("微博");
        utils.sleepRandom(1000, 2000);
        
        // 找到签到按钮点击
        let template = images.read("./resources/templates/checkin_btn.png");
        let screen = images.captureScreen();
        let result = images.match(screen, template, { threshold: 0.85 });
        screen.recycle();
        template.recycle();
        
        if (result) {
            click(result.x + template.width / 2, result.y + template.height / 2);
            toast("微博签到成功");
        } else {
            toast("微博签到按钮未找到");
        }
    }
};

项目文件管理

在 AutoJs6 应用的文件管理器中可以:

v6.7 新增:回收站功能,删除的文件可以在回收站中查看和恢复。