QtScrcpy打包指南:30分钟做出Windows Installer与macOS DMG跨平台安装包

📅 发布时间:2026/9/29 6:22:16
QtScrcpy打包指南:30分钟做出Windows Installer与macOS DMG跨平台安装包
QtScrcpy打包指南30分钟做出Windows Installer与macOS DMG跨平台安装包【免费下载链接】QtScrcpyAndroid real-time display control software项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy第一次独立给 QtScrcpy 出跨平台安装包的人多半经历过这样的下午Qt 环境变量配了一半架构参数又选错windeployqt 直接报找不到DMG 双击开出来是个空白窗口。QtScrcpy 的定位是把安卓设备实时投屏到电脑并反向控制它打包环节看着琐碎其实每一步脚本都在解决一个具体的坑。仓库的 ci/ 目录已经把 Windows Installer 和 macOS DMG 两条链路固化成脚本看懂每个脚本在做什么照着执行一遍就能拿到可分发的安装包。打包全流程一图看懂 ️五个阶段两个平台走的骨架完全一样差别只在各阶段调用的脚本和产物形态阶段干什么Windows 脚本macOS 脚本产出准备读环境变量、删掉旧的构建目录build_for_win.bat 开头build_for_mac.sh 开头干净的构建环境编译CMake 配置 并行构建同上同上exe / .app资源整理复制 adb、keymap、config补齐 Qt 运行时publish_for_win.bat随构建一并完成可直接运行的发布目录封装绿色目录装进安装器.app 压成 DMG交给外部安装器工具package_for_mac.shInstaller / QtScrcpy.dmg验证在干净机器上装一遍——真正能用的安装包下面按阶段展开讲。编译环境一次配好Windows 与 macOS 对照两个平台对环境的要求高度对称差异集中在工具链用一张表对齐最清楚对比项WindowsmacOS必设环境变量ENV_QT_PATHQt 安装根目录ENV_QT_PATHQt 安装根目录额外环境变量发布阶段还要ENV_VCVARSALL指向 vcvarsall.bat无架构参数脚本第二个参数传x86或x64脚本第二个参数传x64或arm64Qt 工具链x86 走msvc2019x64 走msvc2019_64均为 Qt5x64 走clang_64Qt5arm64 走macosQt6生成方式CMake 指定 Visual Studio 17 2022 生成器加-A选架构靠CMAKE_OSX_ARCHITECTURES指定目标架构两个细节值得记一下一是 macOS 上 x64 和 arm64 用的根本不是同一套 Qt一个 Qt5 一个 Qt6架构传错会直接配置失败二是 Windows 发布脚本里那句调用 vcvarsall 注册 VC 环境的操作不是摆设它决定了 windeployqt 会不会把 VC 运行时相关文件带上。按主流程走一遍从清理目录到出安装包准备。两个编译脚本的开头动作一模一样删掉旧的output和build_temp目录再重建临时编译目录。别嫌多余这一步是防止上次构建的残留文件混进这次产物。编译。配置阶段把 Qt 的 cmake 路径和构建类型可选 Debug / Release / MinSizeRel / RelWithDebInfo脚本默认 RelWithDebInfo交给 CMakeWindows 还要额外带生成器与架构参数cmake -DCMAKE_BUILD_TYPERelease -G Visual Studio 17 2022 -A x64 ../.. cmake --build . --config Release -j8macOS 版本把-G、-A换成-DCMAKE_OSX_ARCHITECTURESarm64节奏相同-j8表示 8 个任务并行编译机器核数多可以调大。资源整理。Windows 侧由 publish_for_win.bat 完成把 exe、adb 工具、scrcpy-server 的 jar、仓库里的 keymap 与 config 目录统统拷进一个全新目录再执行 windeployqt 让它自动补齐 Qt 运行时 DLL。macOS 侧没有单独的整理脚本构建出来的 app 包已经是完整形态。封装。Windows 的绿色目录交给安装器工具打包成 Installer 即可仓库脚本到这一步就收尾了。macOS 侧由 package_for_mac.sh 先用 pip 装好 requirements其中包含 dmgbuild再运行 package.py最终在 build 目录产出 QtScrcpy.dmg。DMG 打开后的视觉样式由仓库预置的背景图决定脚本里值得注意的三个决策给发布目录瘦身。publish 脚本在 windeployqt 之后做了一轮删除translations、iconengines 整个目录拿掉imageformats 里只留下截图功能用得到的 qjpeg其余图片格式插件全部清走。它还会删掉 vc_redist 安装包改从 System32x86 则从 SysWOW64直接拷 msvcp140、vcruntime140 这几个 DLL 进目录。结果是发布包更紧凑用户也不用再跑一遍 VC 运行时安装器。用 dmgbuild 做拖拽式安装界面。package.py 的思路是先写一份 JSON 配置再调 dmgbuild窗口定为 780×480 并铺上背景图左侧放 .app、右侧放指向 /Applications 的快捷方式底部再放一份说明文档压缩格式 UDZO、级别 9。这正是 macOS 用户习惯的拖进去就装好体验坐标、尺寸全部写在配置里想调整布局只需要动这份 JSONwindow: {position: {x: 400, y: 200}, size: {width: 780, height: 480}}, contents: [...app 本体、/Applications 链接、README 三项...]版本号跟着 git 标签走。generate-version.py 用git describe取最近的标签去掉前缀后写进 appversion 文件。接进 CI 后每次打包版本号自动刷新不用人工维护这是把打包接入流水线时最省事的一环。避坑清单 ⚠️现象原因解法手动执行 windeployqt 报 command not foundQt 的 bin 目录不在 PATH 里照脚本做法先把%ENV_QT_PATH%\msvc2019_64\bin加进 PATH或直接跑发布脚本它已处理绿色版运行报缺 vcruntime140.dll只指望 vc_redist 安装包没拷运行时 DLL沿用发布脚本的做法从 System32 / SysWOW64 把 msvcp140、vcruntime140 拷进目录DMG 打开后图标错位、背景发虚窗口尺寸、背景图与布局坐标不匹配沿用 780×480 的窗口配置和仓库自带背景图改位置时同步调整 x/y 坐标产物里混进旧文件、行为诡异上次构建的残留没清理保留脚本开头的清目录步骤手动编译时先删 output 和 build_tempWindows 出一套绿色目录装进安装器即 InstallermacOS 出一个拖拽式 DMG两条链路都能按一条命令的节奏跑完。把环境变量设对、按阶段顺序执行脚本出包只是时间问题。全部打包脚本见 ci/ 目录。【免费下载链接】QtScrcpyAndroid real-time display control software项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考