开源 ComposeDesktop Android工具箱

473 阅读3分钟

前言

在Android开发过程中,难免会遇到安装APK,或者需要输入文字到手机的情况,一般都是用adb命令来完成。 然鹅在多台设备连接的时候,就得手动去指定设备,比较麻烦。所以就使用Compose for Desktop 开发了一款Android工具箱。

方便开发的同时,也可以学习下如何做一个Compose 应用。

这些是一些已完成和待完成的功能:

  1. 设备配对(二维码、地址)
  2. 设备属性查看
  3. 文件管理
  4. 设备控制
  5. Apk安装
  6. App 管理
  7. 剪贴板同步
  8. Activity栈查看
  9. Apk 签名

下载地址

Releases · ve3344/AndroidTool

AndroidTool

功能介绍

添加设备

  • 通过 IP 添加
  • 通过连接码添加
  • 通过开发者模式中的扫码添加

image.png

信息页和切换设备

  • 显示prop信息
  • 点击复制prop信息
  • 切换选中设备

支持自定义显示信息

image.png

文件管理

  • 文件查看
  • 路径复制
  • 文件删除功能
  • 文件重命名功能
  • 拖拽发送文件

image.png

控制

  • 文本输入
  • 按键
  • 打开链接
  • 屏幕截取
  • 键盘透传

支持自定义Shell命令

image.png

APK安装

  • 拖拽打开Apk信息
  • 安装Apk

image.png

应用管理

  • 查看已安装应用列表
  • 查看和复制APP信息
  • 启动、停止、卸载应用
  • 导出APK

image.png

image.png

剪贴板同步

  • 获取设备剪贴板
  • 发送数据到设备剪贴板

image.png

设置页

  • 设置APK导出路径
  • 设置ADB路径

image.png

自定义功能

在config目录下可以通过JSON配置文件去自定义一些功能

信息页属性自定义

配置文件:config/info.json

配置格式:

  • title 显示标题
  • key getprop 命令所对应的属性名

默认配置:

[
    {
        "title": "版本",
        "key": "ro.build.version.sdk"
    },
    {
        "title": "Android版本",
        "key": "ro.system.build.version.release_or_codename"
    },
    {
        "title": "品牌",
        "key": "ro.product.product.brand"
    },
    {
        "title": "型号",
        "key": "ro.product.model"
    },
    {
        "title": "名称",
        "key": "ro.product.name"
    },
    {
        "title": "abis",
        "key": "ro.product.cpu.abilist"
    }
]

控制页面自定义

配置文件:config/control.json

配置格式:

输入框

  • type 类型,常量"input"

  • title 标题

  • action shell命令

  • 占位符<input> 代表用户输入的内容

{
    "title": "输入文本",
    "type": "input",
    "action": "input text <input>"
}

按钮

  • type 类型,常量"button"
  • title 标题
  • action shell命令
{
    "title": "Home键",
    "type": "button",
    "action": "input keyevent 3"
}

键盘透传

  • type 类型,常量"keyboard"
  • title 标题
{
    "title": "键盘输入",
    "type": "keyboard"
}

屏幕截取

  • type 类型,常量"screenshot"
  • title 标题
{
    "title": "屏幕截取",
    "type": "screenshot"
}

  • type 类型,常量"group"
  • title 标题
  • spanCount 横向最多显示数量
  • children 子配置
{
    "title": "默认组",
    "type": "group",
    "spanCount": 4,
    "children": [
      {
        "title": "键盘输入",
        "type": "keyboard"
      },
      {
        "title": "屏幕截取",
        "type": "screenshot"
      }
    ]
  }

默认配置:

[
    {
        "title": "输入文本",
        "type": "input",
        "action": "input text <input>"
    },
    {
        "title": "打开链接",
        "type": "input",
        "action": "am start -W -a android.intent.action.VIEW -d <input>"
    },
    {
        "title": "按键",
        "type": "group",
        "spanCount": 3,
        "children": [
            {
                "title": "Home键",
                "type": "button",
                "action": "input keyevent 3"
            },
            {
                "title": "返回键",
                "type": "button",
                "action": "input keyevent 4"
            },
            {
                "title": "菜单键",
                "type": "button",
                "action": "input keyevent 82"
            },
            {
                "title": "音量+",
                "type": "button",
                "action": "input keyevent 24"
            },
            {
                "title": "音量-",
                "type": "button",
                "action": "input keyevent 25"
            },
            {
                "title": "电源键",
                "type": "button",
                "action": "input keyevent 26"
            }
        ]
    },
    {
        "title": "其它",
        "type": "group",
        "spanCount": 4,
        "children": [
            {
                "title": "键盘输入",
                "type": "keyboard"
            },
            {
                "title": "屏幕截取",
                "type": "screenshot"
            }
        ]
    }
]

项目地址

ve3344/AndroidTool

主要技术

  • Compose for Desktop :UI框架
  • Adb :设备控制
  • Json Rpc :远程调用
  • Zxing :二维码生成
  • Sqlite :数据存储

感谢

scrcpy

markaren/YAJ-RPC