【免费下载链接】Winlator-Ludashi
Android application for running Windows applications with Wine and Box86/Box64
Winlator-Ludashi是一款在 Android 上通过 Wine 与 Box86/Box64 运行 Windows x86_64 程序的开源应用。本文面向想参与开发的读者,带你完整走一遍它的构建链路:Gradle 如何自动下载约 70MB 的 Proton 资产并做 SHA-256 校验、NDK/CMake 如何编译三套原生库、以及 Ludashi 等构建变体背后的包名策略。
从零构建 APK:环境要求与一键命令
构建前只需准备 Android Studio(或命令行 + JDK 17),仓库已内置 Gradle Wrapper,无需本地安装特定版本的 Gradle:
git clone https://gitcode.com/gh_mirrors/wi/Winlator-Ludashi cd Winlator-Ludashi ./gradlew assembleDebug几个关键版本参数(都集中在少数几个文件里):
| 配置项 | 值 | 位置 |
|---|---|---|
| Gradle | 8.10.2 | gradle/wrapper/gradle-wrapper.properties |
| Android Gradle Plugin | 8.8.0 | gradle/libs.versions.toml |
| NDK | 29.0.14206865 | app/build.gradle |
| compileSdk / targetSdk | 35 / 28 | app/build.gradle |
| ABI | 仅 arm64-v8a | app/build.gradle |
注意 app/local.properties 中的sdk.dir是开发者本机路径,克隆后需要改成你机器的 Android SDK 路径。
构建链全景:preBuild 触发两次自动下载
Winlator-Ludashi 的 APK 之所以"开箱即装",是因为两个 Gradle 自定义任务被挂到了preBuild上(app/build.gradle):
preBuild └─ downloadProton # 下载并校验 Proton 9 arm64ec(约 70MB) └─ downloadImageFS # 下载并拼接 Ubuntu 根文件系统 imagefs.tar.zst- downloadImageFS(app/build.gradle):把分卷的
imagefs.tar.zst.00/.01依次下载并拼接成完整镜像;若文件已存在则跳过。 - downloadProton(app/build.gradle):下载
proton-9.0-arm64ec.tar.zst,随后立即做双重校验——文件大小必须精确等于73570637字节,且 SHA-256 必须匹配5f9375640479a5b2...。任一环节不通过就删掉文件并抛出GradleException,构建直接失败。
这个设计的意义在于:Proton 镜像是运行时安装 Wine 的关键资产,一旦下载被网络中断或源站污染,带着坏文件继续打包只会让用户在运行期踩坑。把校验前移到构建期,"失败得快、失败得干净"。
运行时还有一道校验:ProtonPackageManager
构建期校验之外,用户日后在 App 内按需下载的其它 Proton 版本(如 x86_64 版、Proton 10/11)由 ProtonPackageManager.java 管理。每个包在 PackageInfo 中都登记了:
partSizes:分卷大小,逐卷比对实际下载字节数(L147-L152);sha256:整包摘要,由 verifySha256 以 64KB 缓冲流式计算,避免一次性把上百 MB 载入内存;- 任一校验失败 → 删除残留文件并返回
false(L162-L174)。
校验通过后,归档交给 ImageFsInstaller.installWineArchive 解压——先按 ZSTD 解,失败再回退 XZ,最终落到容器根目录的opt/<identifier>下。
NDK 侧:CMake 编译出的三套原生库
原生构建入口是 app/src/main/cpp/CMakeLists.txt,产出三类动态库:
- libwinlator:核心渲染/输入/音频库(DisplayX、EGL、SGSR/FSR 后处理等),链接
EGL、GLESv3、vulkan、aaudio等系统库(L12-L51); - libvulkan_renderer:独立的 Vulkan 渲染路径,构建期还会用
glslangValidator把.vert/.frag着色器编译进头文件,并对VulkanRendererContext.cpp做标记替换式补丁(L171-L234); - libfakeinput:通过
LD_PRELOAD注入的假输入库,用于手柄/按键模拟。
另外externalNativeBuild.cmake的abiFilters只保留arm64-v8a,这也是为什么本项目 APK 只能装到 64 位 Android 设备(app/build.gradle)。
三种构建变体:Ludashi 的包名策略
按 README.md 说明,同一个代码基座会出三种功能完全相同、仅包名不同的构建:
- dev-vanilla:原始包名,可与其他 Winlator fork 共存;
- ludashi:包名仿冒知名性能检测应用 Ludashi,部分手机(尤其小米系)检测到该包名会自动进入性能模式,减少降频;
- redmagic:包名仿冒《原神》,可在红魔手机上触发厂商的帧生成(framegen)等游戏增强特性。
关键文件速查
| 文件 | 作用 |
|---|---|
| settings.gradle | 模块声明与仓库配置 |
| gradle.properties | JVM 内存(8GB)、AndroidX、配置缓存开关 |
| gradle/libs.versions.toml | 版本目录:AGP、zstd-jni、commons-compress 等 |
| app/build.gradle | 核心构建脚本:下载任务、NDK、依赖 |
| app/src/main/cpp/CMakeLists.txt | 原生库编译定义 |
| app/proguard-rules.pro | 混淆规则(当前 release 未开启 minify) |
掌握"preBuild → 下载 → 双校验 → CMake 编译"这条主线,你基本就具备了修改 Winlator-Ludashi 并产出可分发 APK 的全部构建知识 🚀
【免费下载链接】Winlator-Ludashi
Android application for running Windows applications with Wine and Box86/Box64
相关推荐
Operit 构建期自动同步 STT 模型 assets:manifest 驱动、SHA-256 校验的 Gradle 生成资产管线
Operit 构建期自动同步 STT 模型 assets:manifest 驱动、SHA 256 校验的 Gradle 生成资产管线 导读 本文讲解 Operi
AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆GUI 自动化Canta 下载指南:多渠道获取与 SHA-256 证书指纹校验
Canta 下载指南:多渠道获取与 SHA 256 证书指纹校验 Canta 是一款基于 Shizuku、无需 Root 即可卸载任意 Android 应用的轻
移动开发Tock 构建系统内置 sha256sum 回退工具:构建产物 SHA-256 校验的实现与跨平台检测机制
Tock 构建系统内置 sha256sum 回退工具:构建产物 SHA 256 校验的实现与跨平台检测机制 本篇技术指南围绕 tools/build/sha25
操作系统嵌入式嵌入式OS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考