尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

告别臃肿GUI!用Python写个6MB的Scrcpy启动器,附送ADB文件传输功能

告别臃肿GUI!用Python写个6MB的Scrcpy启动器,附送ADB文件传输功能 6MB极简Scrcpy控制中心Python脚本实现ADB文件传输与多模式启动在移动设备开发与调试过程中Scrcpy无疑是效率工作者的利器——它能够通过USB或网络将手机屏幕镜像到电脑并支持键鼠操作。但官方命令行工具的繁琐参数与第三方GUI的臃肿体积常常让追求效率的开发者感到不便。本文将展示如何用Python打造一个仅6MB的轻量级控制中心不仅封装常用启动模式还突破性地集成ADB文件传输功能。1. 为什么需要自定义Scrcpy启动器Scrcpy作为开源项目其命令行版本虽然功能强大但每次使用都需要输入冗长的参数。例如开启息屏模式并录制视频需要输入scrcpy -S -r recording.mp4而市面上常见的GUI封装工具往往存在以下问题体积膨胀Electron等框架打包后可达50MB以上功能冗余包含大量非必要功能影响启动速度缺乏扩展性无法方便地添加自定义ADB命令我们的解决方案采用纯Python实现通过PyInstaller打包后仅6MB左右却实现了一键启动四种常用模式普通/息屏/录屏/息屏录屏集成ADB文件传输功能完全开源可定制的代码结构2. 核心功能实现解析2.1 多模式启动控制脚本通过简单的用户输入选择不同工作模式x input(选择模式:\n1、普通\n2、普通息屏\n3、录屏\n4、录屏息屏\n)每种模式对应不同的Scrcpy启动参数模式编号功能描述对应命令行参数1普通模式scrcpy2普通息屏模式scrcpy -S3录屏模式scrcpy -r4录屏息屏模式scrcpy -S -r2.2 文件传输功能实现原生Scrcpy不支持文件传输我们通过封装ADB命令实现了这个功能def getfile(): while(True): filename input(拖入你传输的文件) segments filename.split(\\) desired_content segments[-1] cod r.\adb.exe push filename /sdcard/Download/scrcpy/desired_content os.system(cod)关键点说明使用adb push命令实现文件传输文件默认保存到手机/sdcard/Download/scrcpy/目录支持拖放文件到命令行窗口获取路径注意传输路径可根据需要修改但路径中不要包含空格这会导致ADB命令解析错误。3. 高级定制与优化技巧3.1 录屏功能优化原始脚本的录屏功能做了两处实用改进# 自动生成带时间戳的文件名 current_time datetime.now().strftime(%Y年%m月%d日%H.%M.%S) commond scrcpy -r file/ current_time .mp4自动命名使用当前时间作为文件名避免覆盖指定目录视频统一保存到file文件夹建议在scrcpy主目录下预先创建file文件夹mkdir file3.2 打包为独立EXE使用PyInstaller将脚本打包为独立可执行文件pyinstaller --onefile --console scrcpy_launcher.py打包优化技巧添加--onefile参数生成单个EXE文件使用--console保留命令行窗口通过UPX压缩可进一步减小体积典型文件大小对比打包方式文件大小原始Python脚本2KB打包后EXE6.8MB第三方GUI工具50MB4. 常见问题解决方案4.1 触控失灵问题处理部分设备可能出现镜像显示正常但无法触控的情况可通过以下两种方式解决方法一ADB授权命令adb shell pm grant com.android.shell android.permission.WRITE_SECURE_SETTINGS方法二手动开启安全设置进入手机设置 → 安全 → 屏幕固定开启允许通过USB调试修改权限选项重启设备提示方法一通常能立即生效如无效可尝试方法二。某些设备可能需要两种方法结合使用。4.2 文件传输注意事项为确保文件传输功能正常工作请注意手机端需预先创建接收目录adb shell mkdir -p /sdcard/Download/scrcpy传输的文件名不应包含空格大文件传输时请保持USB连接稳定如需修改默认传输路径可编辑脚本中的对应代码# 修改前 cod r.\adb.exe push filename /sdcard/Download/scrcpy/desired_content # 修改后示例传输到DCIM目录 cod r.\adb.exe push filename /sdcard/DCIM/desired_content5. 扩展思路与二次开发这个轻量级启动器的优势在于极易扩展以下是几个改进方向添加新功能模式def get5(): print(您已开启高清模式) commond scrcpy -m 1920 sendcommod(commond)集成常用ADB命令def adb_screenshot(): current_time datetime.now().strftime(%Y%m%d_%H%M%S) os.system(fadb exec-out screencap -p screenshot_{current_time}.png)增加无线连接支持def wireless_connect(): ip input(输入设备IP地址:) os.system(fadb connect {ip})实际项目中我将这个脚本扩展加入了以下实用功能设备截图自动保存应用安装/卸载快捷操作屏幕分辨率动态调整比特率设置界面整个扩展后的工具仍然保持在8MB以内却大大提升了日常开发调试效率。对于Python初学者这个项目也是学习子进程管理和系统交互的好范例。
返回列表