尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
从零编译双架构APK:tg-ws-proxy-android 构建指南(cargo-ndk + Gradle 完整流程)
从零编译双架构APKtg-ws-proxy-android 构建指南cargo-ndk Gradle 完整流程【免费下载链接】tg-ws-proxy-androidAndroid-форк популярного приложения Flowseal - tg-ws-proxy - локальный прокси-сервер MTProto с проксированием CF или без для частичного обхода проблем загрузки Telegram项目地址: https://gitcode.com/gh_mirrors/tg/tg-ws-proxy-androidtg-ws-proxy-android是知名 MTProto 本地代理 tg-ws-proxy 的 Android 移植版它在手机上启动一个本地 MTProto 代理默认127.0.0.1:1443把 Telegram 流量经加密 WebSocket可走 CloudFlare转发到数据センター从而部分解决加载、连接类问题。项目采用Rust 原生引擎 Kotlin Compose 界面的双层架构核心逻辑用 Rust 编写Kotlin 侧通过 JNA 调用编译出的libtgwsproxy.so。自己动手从零编译你就能获得支持arm64-v8a64位与armeabi-v7a32位双架构的 APK甚至打包出同时兼容两者的 universal 包。整条流程只有两步cargo-ndk 编译 .so → Gradle 打包 APK。一、项目结构与构建原理速览 ️编译前先搞清楚每个部分在哪里、干什么组成部分路径作用Rust 代理引擎src/proxy.rs、ws.rs、cfproxy.rs、crypto.rs、balancer.rs 等本地 MTProto 代理、WS 连接池、CF 转发、加密逻辑原生库导出层src/lib.rs定义 FFI 导出函数供 JNA 调用、全局 tokio 运行时Rust 工程配置Cargo.tomlcdylib动态库、release 极致优化LTO strip opt-level z编译好的原生库app/src/main/jniLibs/arm64-v8a/、armeabi-v7a/下的libtgwsproxy.soKotlin 应用层app/src/main/java/com/amurcanov/tgwsproxy/Compose 界面、前台服务、快捷开关磁贴构建脚本build_so.bat、build_apk.bat一键编译 .so / 一键打包 APKWindows 版 为什么需要两个 .so因为arm64-v8a面向 64 位新设备minSdk 24armeabi-v7a面向 32 位老设备minSdk 21。两者由 Gradle 的 product flavor 分别打入对应 APK。Rust 侧的发布优化配置值得看一眼它把体积压到了极致见 Cargo.tomlopt-level z # 按体积优化 lto true # 链接期优化 codegen-units 1 panic abort strip true # 去除符号表二、构建环境准备Rust、cargo-ndk 与 Android NDK2.1 工具链版本清单 ✅工具版本要求用途Rust rustup1.70编译 Rust 代理引擎cargo-ndk最新版封装 NDK 交叉编译一条命令产出 .soAndroid NDK任意较新版本需含 24、21 级别 sysroot提供 Android 交叉编译工具链JDK17Gradle / Android 构建gradle-wrapper.properties 使用 Gradle 9.6.0Android SDKPlatform 35compileSdk 35app/build.gradle.kts 中指定2.2 安装 Rust 交叉编译目标cargo-ndk 底层靠 rustup 目标 NDK 工具链工作先装好两个 Android 目标rustup target add aarch64-linux-android armv7-linux-androideabi cargo install cargo-ndk2.3 配置 NDK 路径Android Studio 用户SDK Manager → SDK Tools 勾选NDK (Side by side)安装然后记住 NDK 安装目录如...\sdk\ndk\26.x.xxxxxxx。命令行用户安装后需把 NDK 目录设为环境变量ANDROID_NDK_HOME旧版为NDK_HOMEcargo-ndk 靠它定位编译器。这是新手最常踩的坑 ⚠️。Windows 下项目已内置脚本 build_so.bat只需把第 10 行的SDK_PATH改为你自己的 SDK 路径它会自动找到 NDK 版本目录、检测/安装 cargo-ndk 并添加目标。三、cargo-ndk 编译双架构 .so核心步骤 ️3.1 两条命令编译 arm64 arm32build_so.bat 的核心就是两次cargo ndk build --release输出直接落到app\src\main\jniLibs下# [1/2] 64 位arm64-v8aAPI 24 cargo ndk -t arm64-v8a --platform 24 -o app/src/main/jniLibs build --release # [2/2] 32 位armeabi-v7aAPI 21 cargo ndk -t armeabi-v7a --platform 21 -o app/src/main/jniLibs build --release参数速记-t目标 ABIarm64-v8a/armeabi-v7a--platform最低 Android API 级别-o.so 输出目录对应 app/src/main/jniLibs/--release走 Cargo.toml 中的 release 优化配置成功后你会看到两个文件app/src/main/jniLibs/arm64-v8a/libtgwsproxy.so app/src/main/jniLibs/armeabi-v7a/libtgwsproxy.soLinux / macOS 用户直接执行上面两条命令即可-o后路径写成app/src/main/jniLibs无需 .bat 脚本。3.2 编译成功标志终端末尾出现类似输出即成功arm64-v8a: OK [xxxxx bytes] armeabi-v7a: OK [xxxxx bytes]仓库中已经内置了一份编译好的 libtgwsproxy.so如果你只想体验 Gradle 打包环节可以跳过本节的重新编译。四、Gradle 打包 release APK一键产出三个包 4.1 双架构如何映射到 APK flavorapp/build.gradle.kts 用arch维度定义了三个 flavor与 .so 一一对应FlavorminSdk包含 ABI产出 APKarm3221armeabi-v7aapp-arm32-release.apkarm6424arm64-v8aapp-arm64-release.apkuniversal21两者都装app-universal-release.apk同时 app/build.gradle.kts 中显式声明了jniLibs.srcDirs(src/main/jniLibs)保证上一步的 .so 被正确打进包内。4.2 执行打包脚本 build_apk.bat 的流程是从 app/build.gradle.kts 读取versionName当前为1.2.3拼出v1.2.3-android前缀校验两个 .so 是否齐全缺失会提示先运行 build_so.bat执行gradlew assembleRelease --no-daemon把三个 APK 复制重命名到app\release\app/release/ ├── v1.2.3-android-universal.apk # 双架构合一分发给所有人最省事 ├── v1.2.3-android-v8a-minsdk24.apk # 仅 64 位 ARM └── v1.2.3-android-v7a-minsdk21.apk # 仅 32 位 ARM没有 Windows 脚本任何系统下在项目根目录运行./gradlew assembleRelease # Linux / macOS gradlew.bat assembleRelease # Windows4.3 签名说明 release 构建默认开启混淆与资源压缩isMinifyEnabled true R8 full mode。签名逻辑在 app/build.gradle.kts若根目录local.properties里配置了KEYSTORE_FILE、KEYSTORE_PASSWORD、KEY_ALIAS、KEY_PASSWORD则用你的 keystore 正式签名未配置时自动降级为 debug 签名本地安装测试完全没问题只是不能用于商店上架或覆盖更新。性能参数方面gradle.properties 已为构建机做了调优4G 堆内存、并行任务、构建缓存、configuration cache一般无需改动。五、常见问题快速排查 现象原因与对策cargo ndk提示找不到 NDK未设置ANDROID_NDK_HOME环境变量或 NDK 未安装对照 build_so.bat 手动指定目标平台报错如target not installed漏装 rustup 目标rustup target add aarch64-linux-android armv7-linux-androideabibuild_apk.bat 报.so not found先完成第三节运行 build_so.bat再打包 APK提示WARNING: Keystore not found, using debug signing正常现象只是没有配置正式签名见 4.3 节Gradle 下载 JDK 失败settings.gradle.kts 使用 foojay-resolver 自动拉取 JDK 17 工具链确认网络可访问 Gradle 分发源六、完整流程一图流 ┌─ 环境 ─────────────────────────────────────────────┐ │ rustup target add 双目标 → cargo install cargo-ndk │ │ 安装 Android NDK → 设置 ANDROID_NDK_HOME │ └──────────────────────────────────────────────────────┘ ↓ ┌─ 第 1 步编译原生库 ───────────────────────────────┐ │ cargo ndk -t arm64-v8a --platform 24 build --release │ │ cargo ndk -t armeabi-v7a --platform 21 build --release│ │ 输出 → app/src/main/jniLibs/{arm64-v8a,armeabi-v7a}/libtgwsproxy.so └──────────────────────────────────────────────────────┘ ↓ ┌─ 第 2 步Gradle 打包 ─────────────────────────────┐ │ gradlew assembleRelease │ │ 输出 → app/release/ 下 3 个 APKarm32 / arm64 / universal └──────────────────────────────────────────────────────┘完成后推荐安装universal 版一台 APK 通吃 32 位与 64 位设备。装好应用后打开它阅读内置的「信息」页说明点击「启动代理」再点「应用到 Telegram」双架构编译的成果就能跑起来了 关键文件速查build_so.bat.so 编译脚本· build_apk.batAPK 打包脚本· app/build.gradle.ktsflavor 与签名配置· Cargo.tomlRust 依赖与优化配置【免费下载链接】tg-ws-proxy-androidAndroid-форк популярного приложения Flowseal - tg-ws-proxy - локальный прокси-сервер MTProto с проксированием CF или без для частичного обхода проблем загрузки Telegram项目地址: https://gitcode.com/gh_mirrors/tg/tg-ws-proxy-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Roo Code调用本地模型卡顿?绕过HTTP直连Ollama Socket提速11倍

Roo Code调用本地模型卡顿?绕过HTTP直连Ollama Socket提速11倍

1. 这不是“调用慢”,是架构错配导致的性能塌方Roo Code 调用本地模型卡顿——这句标题背后藏着一个被大量开发者忽略的事实:问题根本不在“模型本身跑得慢”,而在于开发工具链与本地推理服务之间存在三重隐性阻抗。我连续两周蹲在 VSCode O…

📅 2026/10/4 1:57:37
YOLOv11多任务学习:目标检测与实例分割工程实践

YOLOv11多任务学习:目标检测与实例分割工程实践

简介:这份PDF文档面向计算机视觉方向的学习者与工程开发者,聚焦多任务学习框架下YOLOv11同时实现目标检测与实例分割的完整工程实践,适合具备一定深度学习基础、希望掌握多任务模型融合设计与落地流程的中高级读者。文档共39页,以…

📅 2026/10/4 1:57:37
GitHub Trending月榜深度解读:从增量排名到项目落地的完整方法论

GitHub Trending月榜深度解读:从增量排名到项目落地的完整方法论

1. 月度热榜的筛选逻辑与信号价值每个月月底,GitHub Trending 月榜都会成为技术圈子里被反复讨论的一份清单。很多人把它当成“下个月该学什么”的参考答案,也有人把它当作判断某个技术方向是否正在起势的晴雨表。我自己跟踪这份榜单差不多有六七年了&am…

📅 2026/10/4 1:57:37
MORE NEWS

更多资讯

📰

--cot与--astro如何抉择?MingLi-Bench思维链与命盘注入效果深度对比

--cot与--astro如何抉择?MingLi-Bench思维链与命盘注入效果深度对比 【免费下载链接】MingLi-Bench A benchmark for evaluating LLMs on Chinese traditional fortune telling — Bazi (八字) and Ziwei Doushu (紫微斗数). 项目地址: https://gitcode.com/gh_mi…

📰

Minimax查询模型用量

查询模型用量主要参考官方文档&#xff0c; FAQs - MiniMax API Docs 基本用法如下, 但是要区分是国内API还是国际版API curl --location https://www.minimax.io/v1/token_plan/remains \ --header Authorization: Bearer <API Key> \ --header Content-Type: applica…

📰

MFC扫雷实现全解析:从消息映射到双缓冲绘制

简介&#xff1a;基于MFC框架实现的经典扫雷游戏完整项目&#xff0c;压缩包内含可运行的exe与Visual C工程源码&#xff0c;既适合初学Windows编程的开发者阅读&#xff0c;也可直接运行体验游戏。资源共54个文件&#xff0c;压缩后2.96MB&#xff0c;涵盖C头文件与实现文件、…

📰

教育文本分析实战:学情预警、作文评估与教学反馈的NLP应用

快码住&#xff01;大数据文本分析在教育领域的应用做了这么多年数据分析&#xff0c;我越来越觉得一个方向被严重低估了&#xff0c;那就是文本分析在教育场景里的落地。大部分人一聊大数据就盯着成绩排名、选课人数、考试通过率这些结构化数据&#xff0c;但教育场景里真正藏…

📰

Word公式编号与右对齐全指南:制表位、域代码及自动引用实战

好久没正经聊Word了。写了这么多年毕业设计和各种技术报告&#xff0c;我身边至少有一半人&#xff0c;栽在Word公式排版这一关上。公式本身不难敲&#xff0c;真正的噩梦是那串编号——它在公式右边待得好好的&#xff0c;你一动行距它就跑偏&#xff1b;全文编号从(1)到(20)手…

📰

OpenClaw更换DeepSeek API Key完整指南:从配置到避坑

1. 为什么必须换 Key&#xff1a;OpenClaw 里 DeepSeek 的接入逻辑1.1 先看 OpenClaw 是怎么用 DeepSeek 的前阵子 OpenClaw 日志里开始接连出现 401 和 429&#xff0c;看一眼就知道 DeepSeek 的 API Key 该换了。这事听起来简单&#xff0c;但真上手换一遍&#xff0c;你可能…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬