微信小游戏 跳一跳 Android 插件

screenshot

源码:https://github.com/iOSDevLog/Jump 现在跳得准了。

测试:https://github.com/iOSDevLog/Jump/releases/download/1.0/Jump.apk

视频:https://weibo.com/tv/v/FD5JIDeTO?fid=1034:be8ac5577f9d183858300b1b18a0c782

现在的微信跳一跳小游戏都是通过 PC 端破解的,于是我就写了一个只用 Android 手机就能破解的插件。

如果10秒还不跳,重新回到插件主页再回到跳一跳试试 。

现在的微信跳一跳小游戏都是通过 PC 端破解的,于是我就写了一个只用 Android 手机就能破解的插件。

【建议】应该还可以通过Accessibility直接在手机端实现

分析


kotlin, Android Studio, Accessibility, adb, root

Accessibility

https://developer.android.com/guide/topics/ui/accessibility/services.html

Accessibility 可以用来辅助操作,自动化测试等,可以参考微信抢红包插件。

我们可以监测微信,如果是跳一跳界面就触发插件。

查了一下文档,好像只有长按,不能自己控制时间。用 Accessibility 实现跳跃是不行了。

adb

如果是连接 PC 端,可以通过 adb 命令截图,模拟跳跃的长按(点击拖动)操作。

input swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen) # 模拟长按
screencap <filename> # 保存截屏到手机

开发


用 Android Studio 创建一个新的项目。

创建一个 AccessibilityService 子类。

manifests

        <service
            android:name=".JumpAccessibilityService"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>
            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/accessibility" />
        </service>

xmo/accessibility.xml

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeWindowStateChanged"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagDefault"
    android:canRetrieveWindowContent="true"
    android:notificationTimeout="100"
    android:packageNames="com.tencent.mm" />
package iosdevlog.com.jump

import android.accessibilityservice.AccessibilityService
import android.view.accessibility.AccessibilityEvent

class JumpAccessibilityService : AccessibilityService() {
    override fun onInterrupt() {
    }

    override fun onAccessibilityEvent(event: AccessibilityEvent?) {
    }

}

测试 adb 命令

    fun adbCommand(commands: Array<String>) {
        try {
            process = runtime.exec("su")
            val os = DataOutputStream(process?.outputStream)

            os.let {
                for (command in commands) {
                    os.write(command.toByteArray())
                    os.writeBytes("\n")
                    os.flush()
                }
                os.writeBytes("exit\n")
                os.flush()
                process?.waitFor()
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

在 AndroidTest 下面添加测试

@Test
fun adbCommand() {
    Utils.screencap()
    val bitmap = BitmapFactory.decodeFile(Utils.SCREENSHOT_LOCATION)
    assertNotNull(bitmap)
    assert(bitmap.width > 0)
}

报错 :

Error:Gradle: failed to create directory '...'

解决方法:

gradle.properties 添加 android.enableAapt2=false

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,410评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,776评论 2 45
  • Android开发工具 Android Studio Android开发环境,基于IntelliJ IDEA,谷歌...
    奈何心善阅读 7,059评论 1 18
  • 下午去公园广场滑轮滑,香味,一阵熟悉的香甜味迎面而来,我贪婪的嗅啊嗅。 久违了的味道,小时侯的味道,想起小时侯房前...
    太阳笑眯眯阅读 3,772评论 9 8
  • 香风浮细软, 绿发绾花簪。 闲来妆对镜, 笔下道清欢。
    胭脂鱼画阅读 1,801评论 0 2

友情链接更多精彩内容