项目管理 — 多脚本协作与模块组织
单脚本 vs 项目
AutoJs6 支持两种组织方式:
| 方式 | 特点 | 适用场景 |
|---|---|---|
| 单脚本(.js 文件) | 独立、简单 | 小型自动化、一次性脚本 |
| 项目(文件夹) | 多文件、可打包 | 复杂应用、需要资源文件 |
创建项目
- 在 AutoJs6 主界面点击右下角 + 号
- 选择「项目」
- 填写项目信息:
- 项目名称
- 包名(用于打包 APK 时)
- 应用图标(可选)
- 确认创建
项目目录结构
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 新增:回收站功能,删除的文件可以在回收站中查看和恢复。