# 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 源码) **关键实锤**: 1. **自实现 AXML 二进制编辑器** —— `AxmlEditor.kt:26-248` - UTF-8 / UTF-16LE 双编码支持 - 字节对齐替换(修改字符串池必须保持字节长度) - 支持清除 `android:testOnly`、权限修复、组件类名恢复 2. **自实现 ARSC 资源表编辑器** —— `ArscEditor.kt:32-79` - 第 10-128 行有详细注释,说明作者深入理解 APK 字节格式 - 可修改 `resources.arsc` 中的字符串(如应用名称本地化) 3. **集成 Google 官方 apksig 库** - `build.gradle.kts:210` → `com.android.tools.build:apksig:8.3.0` - `JarSigner.kt:8` 导入 `com.android.apksig.ApkSigner` - 支持 v1/v2/v3 签名,SHA-256withRSA 2048bit RSA - 支持 Android KeyStore 和 PKCS12 证书切换 4. **真·流式 ZIP 写入** —— `ZipUtils.kt:92-122` - 10MB+ 文件用 STORED 模式(先算 CRC32 再流式写)避免 OOM - `ApkBuilder.kt:1022` 注释写明:Node 二进制 ~40MB 走 streaming write 5. **Zip 4 字节对齐** —— `ZipAligner.kt:23-156` - 自己实现对齐(Java `ZipOutputStream` 不暴露流位置,官方 API 无法做到) **评价**:**国内罕见的字节级 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` ```kotlin 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 | 空壳 | 系统权限拿不到 | --- ## 五、用处与立项判断 ### 能用来干什么 1. **给自己的网站套 Android 壳并上架** —— 能做,但要小心商业版激活码锁 2. **学习 APK 字节格式 / 打包原理** —— ⭐强烈推荐,`apkbuilder/` 就是教材 3. **学习 Android 加密最佳实践** —— ⭐推荐,`crypto/` 很扎实 4. **学习 Android 里跑多语言运行时** —— PHP/Node/Python 的集成套路可抄 5. **Chrome 扩展移动化** —— 稀缺参考 6. **做商业 SaaS 应用** —— ❌ 不推荐,别用别人的引流版 ### 适合的人 - ✅ Android 开发者想学 APK 底层 - ✅ Web 开发者想给自己站点套壳自用 - ✅ 研究 Android 加密 / 反爬 / 扩展系统的人 - ❌ 追求严肃商业落地的团队(用 Capacitor / Tauri Mobile) - ❌ 想要社区生态的(单人项目 + 商业背景,风险大) ### 抄代码优先级 1. **`core/apkbuilder/` 整块** —— 字节级 APK 操作,无替代品 2. **`core/crypto/KeyManager.kt`** —— 按包名派生密钥的设计 3. **`core/engine/BrowserEngine.kt` + `GeckoViewEngine.kt`** —— GeckoView 集成套路 4. **`core/extension/ChromeExtensionParser.kt`** —— manifest.json 解析 5. **`core/ai/AiApiClient.kt`** —— 多 LLM 适配 --- ## 六、关键风险提示 1. **商业背景**:`https://api.shiaho.sbs` 硬编码,上游可能随时改协议 2. **代码 dump 风格**:14 次提交 = 社区贡献几乎不可能,作者跑路就死 3. **i18n 1.4MB 水分**:翻译疑似机器生成,不是真本地化投入 4. **BlackTech 模块噱头**:核弹模式等系统级功能权限拿不到 5. **GeckoView 按需下载**:首次启动有网络依赖,离线场景会报错 --- ## 七、最终定论 **"是不是噱头"**:不是。APK 构建引擎这一块是真家伙,单独拎出来都够发一篇技术文章。 **"是不是纯开源神器"**:不是。是商业产品的引流版。 **"值不值得看"**:**非常值得**。作为 Android 底层学习材料,是近年来质量最高的开源项目之一。 **"该不该用在自己项目里"**:抄技术细节,别抄整个方案。尤其不要依赖 `https://api.shiaho.sbs` 和激活码系统。