使用更现代的方式 开发 Auto.js 项目,提升开发效率
同时支持
原生 UI
和Web 框架
你可以用这个项目开发
-
传统 Auto.js 程序
: 使用 无障碍 操作其他 App -
普通 App
: HTML 表单的增删改查,数据处理与展示,SQLite 持久化数据- 无需安装复杂的 Android 开发环境,轻松打包出自己的 App
-
复刻一个服务程序,用于连接 AutoX, 支持 自动编译与运行
-
将所有模块编译为一个文件 + Tree-Shaking ( rollup )
-
支持 TypeScript 编写代码
-
语法支持 ES6+ , 打包会编译为 ES5 ( babel )
- Rhino 对 ES5 支持比较完善
- 可以使用 npm 包 ( 比如:lodash ) ( 前提是 AutoX 环境支持包中的代码 )
-
混淆变量名与方法名 ( terser )
-
把 js 转为 dex , 并将字符串加密
- Github: Autojs_Rhino_Dex
-
使用 Web 写界面
- 默认 React.js
- 你可以很轻松的修改为 Vite 支持的其他框架
- 比如 vanilla vue solid preact svelte lit qwik
-
使用 Auto.js 原生 UI 写界面
-
将 rollup 迁移到 rspack 或 rolldown
-
使用 AST 生成 web ts 代码, 不再手写 invokeFn 的 aj 函数名字符串
-
使用 AST 生成 native ui 的点击事件/其它事件
-
....... 其他的还没想到
Node.JS v22.14.0 +
pnpm : 性能好 (yarn npm 也可以)
具体用法到源码中看例子
克隆项目并创建新分支
或 下载压缩包
在根目录执行 pnpm install
安装依赖
执行 pnpm run dev
运行脚本
按 快捷键 执行相应功能
设备连接
指的是使用 App 中的 连接电脑
, 输入服务器地址并点击确定 或 扫描二维码
- [1/Q] 自动监听文件改变,重新编译,重新运行
- 设备连接
- [2] 运行项目
- 之后的代码修改会自动更新到设备上
- [W/Z] 启动服务
- 设备连接
- [E/X] 编译代码
- [2] 运行项目
- 修改代码后,手动重复上面两个步骤 编译和运行
- 执行
pnpm run build
, 等待打包完成 - 执行
pnpm run dev
- [Z] 启动 Auto.js 服务
- 设备连接
- [R] 发送项目到设备
- 在 App 中进入项目,打包应用
编写原生 ui 时 , 最外层需要包裹一个 <> </>
在编译时,会将 <>
和 </>
替换成 模版字符串
示例
ui.layout(
<>
<linear id="container"></linear>
</>
)
for (let i = 0; i < 3; i++) {
const textView = ui.inflate(
<>
<text textColor="#000000" textSize="14sp" />
</>,
ui.container
)
textView.attr('text', `文本控件${i}`)
ui.container.addView(textView)
}
输出
ui.layout(`<linear id="container"></linear>`)
// 其他代码省略
编译时会加上
由于 AutoX 太过于灵活,比如 可以调用 Java 类,
所以类型很难写全,
如果有 ts 报错就自己手动在 autox.d.ts 中补充
开发
启动 Auto.js 服务 和 Web 项目,
WebView 中访问 Web 的地址,
享受 Web 开发的一切功能
打包
build 打包时,
把 js css 等代码 合并到 index.html 中,
资源文件都打包到 assets 文件夹中,
并处理代码中一些 Web 资源路径问题,
最后把所有 Web 的文件复制到 AutoX 输出目录,
将 AutoX WebView 的加载地址 改为 index.html
src
: 前端 web 目录src-autox
: Auto.js 目录src-autox/project.json
: 用于保存打包配置,Auto.js 的配置文件
src-runtime
: 前后端通讯的代码out
: 编译后的 Web 代码 与 Auto.js 代码 (发送到设备,然后手动操作打包)types
: TypeScript 自动补全的定义文件plugins
: 插件目录scripts
: NodeJS 脚本 ( 开发 与 打包 )
可以先创建一个 Web 项目,然后手动把文件复制到这个项目里