说明

本文提供的代码仅供参考。不建议用于生产环境。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。

Auto.js简介

Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。

Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。

推荐教程

Auto.js Pro安卓全分辨率免ROOT引流脚本开发视频教程(HD超清1080p)

开发文档

Auto.js Pro开发文档 文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。

为什么要使用Auto.js Pro开发脚本,有什么特点?

吸引我使用Auto.js Pro的原因有很多。最主要的几个原因是:

  • Auto.js Pro能开发免ROOT的安卓脚本
  • Auto.js Pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
  • Auto.js Pro丰富的UI组件,能自定义各种样式的安卓界面
  • Auto.js Pro使用的javascript的语法比较优雅,代码可读性强
  • Auto.js Pro的命令库非常的丰富,接口比较多
  • Auto.js Pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5M,还没有广告

示例代码

// 此代码由飞云脚本圈www.feiyunjs.com整理提供
"ui";
var 背景颜色 = "#dddddd"
var 字号 = "13"
var 字体颜色 = "#dd000000"
var 账号 = {
    "123456789": "123456789"
}
ui.statusBarColor(背景颜色)
ui.layout(
    <ScrollView id="bg" bg="{{背景颜色}}">
    <frame>
        <vertical padding="10 10 10">
            <text size="{{字号*5}}sp" paddingTop="60" paddingLeft="40" color="{{字体颜色}}">登录</text>
            <text id="t1" size="{{字号*2}}sp" color="{{字体颜色}}" marginTop="50" paddingLeft="35"/>
            <input id="ID" w="*" marginRight="30" marginLeft="30" singleLine="true" hint="账号" textColorHint="{{字体颜色}}"/>
            <text id="t2" size="{{字号*2}}sp" color="{{字体颜色}}" marginTop="10" paddingLeft="35"/>
            <input id="Password" w="*" marginRight="30" marginLeft="30" singleLine="true" hint="密码" textColorHint="{{字体颜色}}" password="true"/>
            
            <checkbox id="isRemember" text="记住密码" marginLeft="30"/>
            <button id="Login" style="Widget.AppCompat.Button.Colored" h="{{字号*11}}px" size="{{字号*2}}sp" marginTop="20" marginRight="30" marginLeft="30">登录</button>
            
            <horizontal paddingLeft="40" paddingTop="10">
                <text id="Forget" size="{{字号*1+4}}sp" color="#00aadd">忘记密码</text>
                <text id="Register" size="{{字号*1+4}}sp" color="#00aadd" marginLeft="30">注册账号</text>
            </horizontal>
        </vertical>
    </frame>
    </ScrollView>
)
ui.ID.on("touch", () => {
    ui.t1.setText("账号")
    ui.ID.setHint("")
    if (ui.Password.getText() == "") {
        ui.t2.setText("")
        ui.Password.setHint("密码")
    }
})

ui.Password.on("touch", () => {
    ui.t2.setText("密码")
    ui.Password.setHint("")
    if (ui.ID.getText() == "") {
        ui.t1.setText("")
        ui.ID.setHint("账号")
    }
})

ui.bg.on("touch", () => {
    if (ui.Password.getText() == "") {
        ui.t2.setText("")
        ui.Password.setHint("密码")
    }
    if (ui.ID.getText() == "") {
        ui.t1.setText("")
        ui.ID.setHint("账号")
    }

})

ui.Login.on("click", () => {
    if (ui.Password.getText() == "") {
        ui.t2.setText("")
        ui.Password.setHint("密码")
    }
    if (ui.ID.getText() == "") {
        ui.t1.setText("")
        ui.ID.setHint("账号")
    }
})

ui.Login.on("click", () => {
    if (ui.ID.getText() != "") {
        if (ui.Password.getText() != "") {
            if (ui.Password.getText() == 账号[ui.ID.getText()]) {
                toast("正在登录")
                threads.start(function(){
                var date = new Date();
                var seperator1 = "_";
                var seperator2 = "_";
                var month = date.getMonth() + 1;
                var strDate = date.getDate();
                if (month >= 1 && month <= 9) {
                    month = "0" + month;
                }
                if (strDate >= 0 && strDate <= 9) {
                    strDate = "0" + strDate;
                }
                var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate +
                    "_" + date.getHours() + seperator2 + date.getMinutes() +
                    seperator2 + date.getSeconds();
                var login_info = {
                    ID: ui.ID.getText(),
                    Password: ui.Password.getText(),
                    currentdate: currentdate
                }
                    })
            } else {
                dialogs.alert("输入的账号或密码有误,请重试", "", () => {})
            }
        } else {
            ui.Password.setError("请输入密码")
        }
    } else {
        ui.ID.setError("请输入账号")
    }
})