AutoJs4App核心架构源码大分享

源代码获取地址:https://pan.baidu.com/s/1_M7G7DexR-QcFmiHmth1qg 提取码:04ui

          AutoJs技术一直是自动阅读和自动化测试AndroidApp的理想工具,鄙人在这个领域奋斗了300多个日夜有点小见解,也写了一点应用应可以参见我之前的代码和博客。本次给大家分享结束Autojs的核心框架也是我用这个框架一直在编写薅羊毛专业版app。功能和函数我都封装好了大家直接使用就可以了

 

        

         我将多余的代码去掉形成了精简版,大家可以直接拿去运行修改。

对代码做了整体规划也采用了中文名称。这样对对于阅读和修改都是非常便利的。看下截图:

代码少了1万多行。请放心核心得都在

AutoJs4App核心架构用到技术颇多。因为打包成Apk肯定有和用户交互的地方那也就意味着有UI界面。列举一下技术有需要技术的也可以查看本文档来复制代码。

  1. AutoJs UI技术。List、button、checkbox、input、swich等控件。
  2. AutoJs UI技术复杂页面布局。抽屉、headermenu、tab页面、垂直布局、水平布局等。
  3. Image图标使用base64格式显示。
  4. AutoJs 悬浮框。
  5. AutoJs 开启无障碍权限代码。
  6. AutoJs 开启悬浮窗权限代码。
  7. 多线程。
  8. Http访问网络。
  9. 控制台。
  10. 本地存储。
  11. 按键模拟。
  12. 事件与监听。
  13. 对话框。
  14. 设备信息。
  15. App常用函数。

先不吹牛技术了,咱们直接看薅羊毛个人版APP的截图。如下:

 

这个是写的JS脚本在AutoJs里面的效果。咱们看一看薅羊毛UI版的截图。

 

薅羊毛首页,Splash页面。可以做很多东西……

薅羊毛配置页面

前2项我就不多说了,友情提醒先开启无障碍在开启悬浮否则App会挂掉。

  1. 控制台还是不建议开启,有的App签到会失败。
  2. 是否开Toast提示,其实是无所谓的。
  3. 是否自动签到,这个还是很意义的,之前我放自动刷的前面发现有的app会卡住,防止万一我把签到放到自动刷的后面了和清理内存一起
  4. 自动评论,在我看来整个app最难的就是这个,太难了…….另外不是所有的App都让评论。
  5. 自动清理缓存,整个说过了。
  6. 自动提现,目前都是最小金额。
  7. 执行天数,大于1天就行反正我们手机少,如果是工作室多几天还行不过别指望无障碍玩工作室那样你会很崩溃,
  8. 滑动屏幕间隔,这个我默认是8秒。
  9. 随机概率,默认是十分之一,该不该无所谓吧,主要是随机点赞、随机关注、随机评论、随机上滑、随机下滑。控制着几个事件的随机概率。

薅羊毛专业版系统页面:

  1. 日志,我会将更新的日志发到这里
  2. 此版本将支持在线更新
  3. 教程还是我CSDN博客地址(以后会改)
  4. 关于就是版权说明,强调一下,我之前发布的代码有很多人转载也没写版权我就不追究了,如果有人利用我的源码和Apk文件在网络上贩卖我一定会追究。
  5. 退出……没啥说的吧

接下来我把整个App比较难写的地方写贴出来给大家提个醒,可能你们认为不是问题。献丑了不要见笑。之后我会将所有代码求全部贴出。

部局的时候出现了点问题,一直找不到合理的部局且很难看(现在也不怎么好看)。后来在AutoJs中示例看到了复杂部局就学了一下,效果还可以吧。

 

代码如下:

 

区域判断并点击坐标:

/**
 * 判断区域是否存在存在则进行点击
 * 不存在则返回Flase存在则点击点击成返回True失败False
 * @param {rect区域} areaBounds 
 */
function clickAreaForBounds(areaBounds) {
    if (areaBounds.exists()) {
        toastInfo(areaBounds+"exists")
        return clickControlBounds(areaBounds)
    } else {
        return false
    }
}

 

双击屏幕加关注:

 

/**
 * 双击屏幕(很多视频其实就是点赞)
 */
function doubleClick() {
    //增加个随机概念 最多敲击三次
    click(200, 200)
    sleep(100)
    click(202, 210)
}

 

/**
 * 获取手机安装app的集合
 */
function getAppList() {
    var pm = context.getPackageManager()
    var appList = pm.getInstalledApplications(0)
    var appInfoList = []
    for (let i = 0; i < appList.size(); i++) {
        var app = appList.get(i)
        var appInfo = {
            appName: app.loadLabel(pm),
            packageName: app.packageName,
            isSystemApp: app.isSystemApp()
        }
        if (!app.isSystemApp()) {
            appInfoList.push(appInfo)
        }
    }
    return appInfoList
}

保存配置采用的是storage,这个是不安全的只要知道名称就可以访问,敏感数据不建议使用它。保存配置代码:

源代码获取地址:https://pan.baidu.com/s/1_M7G7DexR-QcFmiHmth1qg 提取码:04ui

おすすめ

転載: blog.csdn.net/zy0412326/article/details/116451648
おすすめ