11 KiB
WebToApp 源码深度解析
仓库:https://github.com/shiahonb777/web-to-app Clone 路径:
source/(gitignored) 分析日期:2026-04-13 分析方法:随机采样 + 关键文件逐行精读 + grep 证据链
一、项目元数据
| 指标 | 值 |
|---|---|
| 创建时间 | 2025-11-26(5 个月) |
| 最后推送 | 2026-04-12 |
| Stars / Forks | 2465 / 353 |
| 仓库大小 | 19.6 MB(Kotlin 源码 33MB) |
| 提交数 | 仅 14 次(典型代码 dump,非社区开发) |
| 文件数 | 522 个 .kt 文件,约 10 万行 |
| 技术栈 | Kotlin 1.9 + Jetpack Compose + Room + KSP + Coroutines + Flow |
| versionCode | 32(v1.9.5) |
| 模块数 | core/ 下 43+ 个子模块 |
一句话定位:这是某个商业产品(shiaho.sbs 品牌)的阉割版开源引流版,核心代码开源但服务端+激活码+订阅闭源。
二、核心发现(按评分排序)
⭐⭐⭐⭐⭐ 1. APK 构建引擎 —— 真功夫,全项目最高价值
位置:app/src/main/java/com/webtoapp/core/apkbuilder/(480KB 源码)
关键实锤:
-
自实现 AXML 二进制编辑器 ——
AxmlEditor.kt:26-248- UTF-8 / UTF-16LE 双编码支持
- 字节对齐替换(修改字符串池必须保持字节长度)
- 支持清除
android:testOnly、权限修复、组件类名恢复
-
自实现 ARSC 资源表编辑器 ——
ArscEditor.kt:32-79- 第 10-128 行有详细注释,说明作者深入理解 APK 字节格式
- 可修改
resources.arsc中的字符串(如应用名称本地化)
-
集成 Google 官方 apksig 库
build.gradle.kts:210→com.android.tools.build:apksig:8.3.0JarSigner.kt:8导入com.android.apksig.ApkSigner- 支持 v1/v2/v3 签名,SHA-256withRSA 2048bit RSA
- 支持 Android KeyStore 和 PKCS12 证书切换
-
真·流式 ZIP 写入 ——
ZipUtils.kt:92-122- 10MB+ 文件用 STORED 模式(先算 CRC32 再流式写)避免 OOM
ApkBuilder.kt:1022注释写明:Node 二进制 ~40MB 走 streaming write
-
Zip 4 字节对齐 ——
ZipAligner.kt:23-156- 自己实现对齐(Java
ZipOutputStream不暴露流位置,官方 API 无法做到)
- 自己实现对齐(Java
评价:国内罕见的字节级 APK 操作实现。不是调 Android Gradle Plugin,不是调 AAPT,而是完全手搓。这块单拎出来就是一个独立项目的价值。
⭐⭐⭐⭐ 2. 浏览器引擎抽象 —— 真集成 GeckoView
位置:core/engine/
BrowserEngine.kt:11-122定义统一接口(loadUrl、evaluateJavascript、getShields...)GeckoViewEngine.kt:30-80真·导入org.mozilla.geckoview.*GeckoRuntime.create(context, settings)运行时单例(第 63 行)- 反追踪、SafeBrowsing、Cookie 隔离配置(第 52-61 行)
- Gecko 原生库不内置:
build.gradle.kts:137-142明确排除libxul.so,由GeckoEngineDownloader.kt按需下载(减小主 APK 体积) SystemWebViewEngine.kt提供备选路径
评价:真的把 Firefox 内核塞进了 Android 壳应用,不是字符串常量。
⭐⭐⭐⭐ 3. 多运行时 —— 真打包真跑
| 运行时 | 实现 | 真假 |
|---|---|---|
| Node.js | NodeRuntime.kt + JNI 桥 NodeBridge.kt |
真:调用 node::Start() 进程内跑,但 NodeRuntime.kt:18-26 注释说 libnode.so 是共享库,单进程只能启动一次(nodejs-mobile 限制) |
| PHP | PhpAppRuntime.kt + ProcessBuilder |
真:build.gradle.kts:250-284 有 downloadPhpBinary gradle task,从 pmmp/PHP-Binaries 下载 PHP 8.4;PhpAppRuntime.kt:70-72 优先从 nativeLibraryDir 加载(绕 SELinux execute_no_trans) |
| Python | PythonRuntime.kt + ProcessBuilder |
真:下载 CPython,支持 Flask/Django/FastAPI |
| Go | GoRuntime.kt + ProcessBuilder |
轻度:只支持预编译的 Go 程序 |
| "Linux" | PerformanceOptimizer.kt(2809 行) |
名不副实:其实是纯 Kotlin 做的图片压缩/JS/CSS minify |
评价:真打包了二进制,但通过下载策略(而非内置)控制主 APK 体积。设计合理。
⭐⭐⭐⭐⭐ 4. 商业化模块 —— 阉割版铁证
铁证 1:硬编码云服务端 —— CloudApiClient.kt:30
const val BASE_URL = "https://api.shiaho.sbs"
/api/v1/activation/redeem(第 50 行):激活码兑换/api/v1/activation/preview(第 80 行):激活码预览- 完整的云备份 / 通知 / 分析后端
铁证 2:激活码系统 —— ActivationManager.kt:20-507
- 4 种激活码类型:
PERMANENT/TIME_LIMITED/USAGE_LIMITED/DEVICE_BOUND - 常量时间比较防时序攻击(第 441-448 行)
- 时限/用途持久化到 DataStore(第 281-305 行)
铁证 3:Google Play 订阅 —— BillingManager.kt:15-25
- 6 个 SKU:
pro_monthly/quarterly/yearly、ultra_monthly/quarterly/yearly - 集成
com.android.billingclient:billing-ktx:7.0.0 - 订阅检查:第 300-328 行
评价:开源的是引流版,真正的商业版有闭源后端。作者的变现逻辑是清晰的。
⭐⭐⭐⭐ 5. 加密与加固 —— 教科书级
crypto/(15 文件,4459 行):
AesCryptoEngine.kt:AES-GCM + PBKDF2 派生KeyManager.kt:48-95:按包名+签名派生,每个 APK 独立密钥AssetEncryptor.kt+SecureAssetLoader.kt:资源加密加载
disguise/(5 文件,2773 行) —— 浏览器指纹伪装:
BrowserDisguiseEngine.kt:39-80三层架构:- Level 1:BrowserKernel(HTTP 头 + 基础 JS)
- Level 2-5:22 个指纹向量(Canvas / WebGL / Audio / Screen / Timezone...)
- OAuth 专用层:
OAuthCompatEngine
BrowserDisguiseJsGenerator.kt:动态生成伪装 JS- 明确针对 Google/Facebook/Microsoft OAuth 反检测
blacktech/(BlackTechConfig.kt 203 行) —— ⚠️ 可疑:
- "核弹模式""隐身模式""摩斯电码""SOS 求救"
forceMaxPerformance/forceBlockPowerKey/forceAirplaneMode需要系统权限- 用户应用层 APK 根本拿不到这些权限 → 可能是设计文档 / PPT 功能
评价:加密真功夫,指纹伪装真功夫,"黑科技"模块水分大。
⭐⭐⭐⭐ 6. Chrome 扩展兼容层 —— 真做到了
extension/(31 文件,22661 行,单模块最大)
ChromeExtensionParser.kt:77-243:真的解析manifest.json- 支持
content_scripts、permissions、background等 - 生成虚拟
chrome-extension://URL scheme
- 支持
ChromeExtensionPolyfill.kt:1409:实现chrome.runtime.sendMessage()DeclarativeNetRequestEngine.kt:声明式网络请求规则(Manifest V3)ExtensionFileManager.kt:399-407:扫描嵌套目录找 manifest.json
评价:可以原生运行简单 Chrome 扩展。国内少见的完整实现。
⭐⭐⭐⭐ 7. AI 模块 —— 多家 LLM 适配
ai/(14 文件,10850 行)
AiApiClient.kt:30支持 Claude / Gemini / OpenAI / OpenRouter- Anthropic header:
anthropic-version: 2023-06-01 - 资源文件
litellm_model_prices.json(39KB)包含 100+ 模型即时价格 - 无硬编码 API Key(grep 未命中 sk-/claude-/AIza)—— 用户自带凭证,设计正确
评价:不是噱头,真做了多提供商抽象。价格表的存在说明考虑了成本优化。
三、体积与依赖
core/ 模块体积 Top:
i18n/ 1.4M ← 翻译资源(可能机器生成,体积 20%+ 水分)
extension/ 916K ← Chrome 扩展系统
apkbuilder/ 480K ← ★ APK 构建
webview/ 480K
ai/ 468K
cloud/ 328K
crypto/ 172K
linux/ 108K
assets/:
litellm_model_prices.json (39KB)
php_router_server.php (24KB)
sample_projects/ (40+ 示例)
jniLibs/: libxul.so 被排除,运行时下载
APK 体积控制策略:所有大二进制(GeckoView/Node/PHP/Python/Go)均通过 gradle task 下载 + 运行时下载,不直接打包。
四、技术评分矩阵
| 模块 | 评分 | 类型 | 备注 |
|---|---|---|---|
| APK 构建引擎 | 9/10 | 真功夫 | 全项目最高价值,字节级 APK 操作 |
| 加密体系 | 8/10 | 真功夫 | PBKDF2+AES-GCM,按包名派生 |
| 浏览器引擎 | 8/10 | 真集成 | GeckoView 真接入 |
| Chrome 扩展 | 8/10 | 真功夫 | 完整 Polyfill |
| AI 多模型 | 7/10 | 真功夫 | 无硬编码 Key |
| 运行时集成 | 7/10 | 真集成 | 下载而非内置策略 |
| 指纹伪装 | 7/10 | 部分真 | Canvas/WebGL/Audio 真做 |
| 激活/订阅 | 6/10 | 调包 | 商业化模板 |
| "黑科技" BlackTech | 3/10 | 空壳 | 系统权限拿不到 |
五、用处与立项判断
能用来干什么
- 给自己的网站套 Android 壳并上架 —— 能做,但要小心商业版激活码锁
- 学习 APK 字节格式 / 打包原理 —— ⭐强烈推荐,
apkbuilder/就是教材 - 学习 Android 加密最佳实践 —— ⭐推荐,
crypto/很扎实 - 学习 Android 里跑多语言运行时 —— PHP/Node/Python 的集成套路可抄
- Chrome 扩展移动化 —— 稀缺参考
- 做商业 SaaS 应用 —— ❌ 不推荐,别用别人的引流版
适合的人
- ✅ Android 开发者想学 APK 底层
- ✅ Web 开发者想给自己站点套壳自用
- ✅ 研究 Android 加密 / 反爬 / 扩展系统的人
- ❌ 追求严肃商业落地的团队(用 Capacitor / Tauri Mobile)
- ❌ 想要社区生态的(单人项目 + 商业背景,风险大)
抄代码优先级
core/apkbuilder/整块 —— 字节级 APK 操作,无替代品core/crypto/KeyManager.kt—— 按包名派生密钥的设计core/engine/BrowserEngine.kt+GeckoViewEngine.kt—— GeckoView 集成套路core/extension/ChromeExtensionParser.kt—— manifest.json 解析core/ai/AiApiClient.kt—— 多 LLM 适配
六、关键风险提示
- 商业背景:
https://api.shiaho.sbs硬编码,上游可能随时改协议 - 代码 dump 风格:14 次提交 = 社区贡献几乎不可能,作者跑路就死
- i18n 1.4MB 水分:翻译疑似机器生成,不是真本地化投入
- BlackTech 模块噱头:核弹模式等系统级功能权限拿不到
- GeckoView 按需下载:首次启动有网络依赖,离线场景会报错
七、最终定论
"是不是噱头":不是。APK 构建引擎这一块是真家伙,单独拎出来都够发一篇技术文章。
"是不是纯开源神器":不是。是商业产品的引流版。
"值不值得看":非常值得。作为 Android 底层学习材料,是近年来质量最高的开源项目之一。
"该不该用在自己项目里":抄技术细节,别抄整个方案。尤其不要依赖 https://api.shiaho.sbs 和激活码系统。