{"id":13841713,"url":"https://github.com/LuckyLi706/flutter_mobile_command_tools","last_synced_at":"2025-07-11T13:32:26.114Z","repository":{"id":37636589,"uuid":"379831381","full_name":"LuckyLi706/flutter_mobile_command_tools","owner":"LuckyLi706","description":"flutter写的桌面可视化操作android和ios的简单命令","archived":false,"fork":false,"pushed_at":"2024-09-08T05:20:37.000Z","size":41331,"stargazers_count":117,"open_issues_count":1,"forks_count":26,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-09-08T06:29:10.274Z","etag":null,"topics":["adb","android","flutter","ios","linux","macos","tools","windows"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LuckyLi706.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-24T06:51:48.000Z","updated_at":"2024-09-08T05:20:40.000Z","dependencies_parsed_at":"2024-09-08T06:39:19.039Z","dependency_job_id":null,"html_url":"https://github.com/LuckyLi706/flutter_mobile_command_tools","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuckyLi706%2Fflutter_mobile_command_tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuckyLi706%2Fflutter_mobile_command_tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuckyLi706%2Fflutter_mobile_command_tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuckyLi706%2Fflutter_mobile_command_tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LuckyLi706","download_url":"https://codeload.github.com/LuckyLi706/flutter_mobile_command_tools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225729657,"owners_count":17515151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adb","android","flutter","ios","linux","macos","tools","windows"],"created_at":"2024-08-04T17:01:18.971Z","updated_at":"2024-11-21T12:30:24.863Z","avatar_url":"https://github.com/LuckyLi706.png","language":"Dart","readme":"# MobileTool\n超级方便的adb命令工具，支持所有桌面端，不管你是开发还是测试，都可以试试看。\n+ [录制在b站的讲解视频](https://www.bilibili.com/video/BV1vY4y1J788?vd_source=62e17be4df670ba78219421e89af9bc9)\n\n## 说明\n+ 关于Android\n  \n  请自行打开手机开发者模式中的USB调试，确保手机和电脑能连接上。确保能使用adb连接上。。本工具Android模块只是将adb的大部分命令进行了懒人模式，有问题欢迎提issues。[adb命令参考](https://github.com/mzlogin/awesome-adb)\n  + [安卓手机开启开发者选项](https://jingyan.baidu.com/article/642c9d34e8a0d4254a46f7f8.html)\n  \n+ 关于IOS\n  \n  使用[libimobiledevice](https://github.com/libimobiledevice/libimobiledevice)，IOS意义不是很大。就写了几个小功能。还是爱思比较香。\n\n+ 关于配置文件和工具\n  \n  - 本地文件路径\n  \n    1. Windows：C:\\Users\\用户名\\Documents\\MobileTools \n    2. Linux：/home/用户名/Documents/MobileTools  \n    3. Windows：/Users/用户名/Documents/MobileTools\n  - MobileTools的目录结构\n  \n    1. apksigner文件夹（签名文件）\n    2. config文件夹（用于保存一些信息）\n    3. tools文件夹（包含adb、反编译一些本地文件）\n       + apktool文件夹（存放apktool.jar文件和FakerAndroid.jar，去云盘取）\n       + uiautomatorviewer文件夹（存放获取焦点工具，去云盘取）\n       + 一些adb以及fastboot文件\n    4. SETTING（本地路径的设置文件）\n    5. VERSION文件（当前软件的版本号）\n  \n  如果需要使用反编译，以及获取当前界面的焦点的工具，几个工具太大。保存到了百度云盘，需要的可以放到tools文件夹下面。[链接](https://pan.baidu.com/s/12ns4VdU3xRYYmacXvUIKbw)，提取码：xjwr。\n## 功能\n\n### 设置\n\n+ adb（选择本机的adb文件，以防止和内部adb冲突）\n+ java（部分命令需要java环境，如果你不想配置环境变量，可以选择java文件）\n+ libimobiledevice（IOS的环境，感觉用处不是很大）\n\n![](screenshots/settings.png)\n\n### Android\n+ 开启Root\n  如果手机有Root权限，可以打开，在获取信息的时候使用到。如果手机有Magisk，可以安装这个插件[adb_root](https://github.com/evdenis/adb_root)，可以让所有的命令都走root权限。\n  \n+ 内置ADB\n  如果你的电脑没有adb，打开这个开关会使用内置的adb。如果你电脑本身有adb，点击右上角的配置，配置adb路径，以免内置的adb和你安装的adb冲突。\n  \n+ 基本操作\n  - 获取设备\n    获取当前所有连接的Android设备，展示在下拉框里面（如果当前只有单一设备，也可以不获取）\n  - 获取设备信息\n    选择，然后点击获取信息，部分信息在高版本的手机上面需要Root权限\n  - 自定义adb命令（3.0新增）\n    本软件没有涉及带的命令，可以添加保存，下次使用\n  - 自定义其他命令（3.0新增）\n    相关其他终端命令，可以添加保存，下次使用\n  \n+ 无线连接\n  - 无线连接\n    选择真机，非自定义的情况下会去获取当前真机的ip，获取成功直接去连接，获取失败，需要自定义去填入ip:port。选择其他模拟器设备，默认内置了所有模拟器的第一台设备的端口。然后点击无线连接就ok了。\n  - 断开\n    只能断开无线连接的设备和模拟器\n  \n+ 应用管理\n\n  + 当前包名\n    获取当前展示的app包名，展示在上面的下拉框里面。\n  + 冻结包名（3.0新增）\n    获取所有冻结的app包名，展示在上面的下拉框里面。\n  + 第三方包名（2.0新增）\n    获取当前所有第三方的app包名，展示在上面的下拉框里面。\n  + 系统包名（2.0新增）\n    获取当前所有系统的app包名，展示在上面的下拉框里面。\n  + 冷冻（3.0新增）\n    对当前选择的包名对应的apk进行冷冻\n  + 解冻（3.0新增）\n    先获取所有冻结的包名，然后选择包名，进行解冻\n  + 安装apk\n    选择本地的apk文件安装到手机上面\n  + 卸载apk\n    卸载当前获取到包名的apk。\n  + 主Activity（3.0新增）\n    获取当前包名的启动Activity类名。\n  + 当前Activity（3.0新增）\n    当前正在展示的Activity类名。\n  + app包信息（2.0新增）\n    当前获取到包名的app信息，可以复制部分信息为应用交互做准备。\n  + apk安装路径\n    当前获取到包名的app路径。\n  + 清除数据\n    清除当前获取到包名的缓存数据。\n  \n+ 应用信息（3.0新增）\n  \n  + 内部包名和外部apk\n    选择内部包名需要先获取包名，然后点击下面的按钮，选择外部apk，点击下面的按钮会弹窗让你选择apk\n  + apk包信息\n    获取app的包信息（包含app包名、app名字、app版本、app启动类）\n  + apk权限\n    获取apk需要的权限信息\n  \n+ 应用交互（2.0新增）\n  \n  以下3.0版本都对其进行了本地保存，可以自行添加，以供下次使用。存储在config文件夹下面。\n  \n  - 启动Activity\n    弹窗输入要启动的Activity名字，如果没有输入将启动当前获取包名的app。（关于启动类可以通过主Activity包信息获取）\n  - 发送BroadcastReceiver\n    弹窗输入要启动的广播，下面也列出了部分系统广播，用于测试很难出现的广播。\n  - 发送Service\n    弹出输入要启动的Service\n  - 停止Service\n    弹出输入要通知的Service\n  \n+ 文件管理\n  - 推送文件\n    选择文件推送到当前设备，默认推送位置/data/local/tmp。点击自定义路径，可以输入你想推送的路径。\n  + 拉取文件\n    从当前设备拉取文件到桌面。\n    1. 手机crash\n       点击手机crash，将收集所有crash日志，展示出来，然后选择时间点点击拉取crash。会推送到桌面\n    2. 拉取文件\n       只是为了拉取文件。需要先配置搜索的文件路径，然后点击搜索，会搜索该路径下的所有文件。然后再点击拉取文件。也会推送到桌面。\n    3. 拉取anr\n       直接点击，会直接拉取anr日志到桌面（时间有点长，耐心等待）\n  \n+ 模拟操作\n  你可以使用大部分模拟命令。\n  \n  + 打开获取焦点工具（3.0新增，需要java环境。需要从云盘获取工具放到tools文件夹）\n    ![](screenshots/simtool.png)\n  + 添加指令文件\n    支持4类指令。滑动、点击、文本、所有按键（参考[adb_simulate_code.txt](adb_simulate_code.txt)文件）\n    - 关于输入中文的问题,参考以下：\n      + [ADBKeyBoard](https://github.com/senzhk/ADBKeyBoard)\n      + [解决adb输入中文以及乱码的问题](https://blog.csdn.net/RHJlife/article/details/122202511)\n  + 刷新指令文件（3.0新增）\n    修改之后。可以直接刷新指令，直接使用\n  + 执行指令  \n    用户执行指令的按钮\n  + 停止指令 \n    只有在开启循环时有效。表示停止执行循环\n  \n+ 逆向相关（3.0新增，需要java环境。需要从云盘获取工具放到tools文件夹）\n  \n  + Apktool拆包\n    使用apktool进行拆包。详情见[Apktool](https://ibotpeaches.github.io/Apktool/)\n  + ApkTool合包\n    使用apktook进行合包。详情见[Apktool](https://ibotpeaches.github.io/Apktool/)\n  + FakerAndroid\n    使用FakerAndroid进行拆包可以二次开发的gradle项目。详情见[FakerAndroid](https://github.com/Efaker/FakerAndroid)\n  \n+ 刷机相关\n  \n  + 重启手机\n    重新启动手机\n  + 重启到fastboot\n    重启手机到fastboot模式\n  + 重启到recovery\n    重启手机到recovery模式\n  \n+ 实用操作\n  \n  + 截屏（2.0修改）\n    截取当前设备的界面，并且推送到桌面（命名 当前时间.png）\n  + 录屏（2.0修改）\n    录取当前屏幕，需要先设置时间，完成后推送到桌面（命名 当前时间.mp4）\n  + v2签名\n    使用apksigner的签名。可以进行替换，保证文件名一样。apksigner.json为签名的key以及密码。替换记得修改。\n  + 前面校验\n    校验apk的签名信息\n### IOS\n\nIOS意义不是很大，简单写了几个命令。要下itunes，还有下面的工具，提供获取设备，获取包名，安装和卸载ipa。直接用爱思吧。\n\n+ [libimobiledevice-windows](https://github.com/libimobiledevice-win32/imobiledevice-net)\n+ [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice)\n\n## 编译\n所有平台应用都改成了占当前屏幕的2/3，采用居中显示，linux没有居中，GTK没搞过。\n+ windows\n\n  ```\n  安装Visual Studio,c++桌面包。\n  flutter build windows  //进行编译。\n  在build/windows/runner 会生成Visual Studio的解决方案工程，可以导入进行开发。\n  生成的exe在build/windows/runner/Release/*.exe\n  ```\n\n+ linux\n\n  ```\n  //linux需要安装以下依赖\n  sudo apt-get update\n  sudo apt install clang\n  sudo apt install cmake\n  sudo apt install ninja-build\n  sudo apt install libgtk-3-dev\n  \n  \n  file INSTALL cannot copy file  //出现这个问题\n  flutter clean  //执行这个然后重启AndroidStudio\n  \n  flutter build linux //生成release包,文件在build/linux/release/bundle下面\n\n  使用adb出现adb devices =\u003e no permissions (user in plugdev group; are your udev rules wrong?) [duplicate]\n  参考地址解决：https://stackoverflow.com/questions/53887322/adb-devices-no-permissions-user-in-plugdev-group-are-your-udev-rules-wrong\n\n  ```\n\n+ macos\n\n  ```\n  安装Xcode，然后在编译的时候遇到很多小问题。然后百度解决了，其中一个\n  [tool_crash] Invalid argument(s): Cannot find executable for /Users/imac/Documents/FlutterSDK/flutter/bin/cache/artifacts\n  解决方案：https://github.com/flutter/flutter/issues/85107\n  \n  flutter build macos //生成release包,文件在build/macos/Build/Products/Release/下面\n  将mac目录下的文件倒入xcode可进行开发\n  ```\n  \n\n## 截图展示\n+ windows（1920*1080）\n![screenshots/windows.png](screenshots/windows.png)\n\n+ linux (1920*1080)\n![screenshots/linux.png](screenshots/linux.png)\n\n+ macos (1440*960)\n![screenshots/macos.png](screenshots/macos.png)\n\n## 其他\n\n+ [关于Windows调用Process.start隐藏黑色弹窗](https://github.com/dart-lang/sdk/issues/39945)\n","funding_links":[],"categories":["Dart"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLuckyLi706%2Fflutter_mobile_command_tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLuckyLi706%2Fflutter_mobile_command_tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLuckyLi706%2Fflutter_mobile_command_tools/lists"}