Files
webtoapp-docs/.memory/source-analysis.md

11 KiB
Raw Permalink Blame History

WebToApp 源码深度解析

仓库https://github.com/shiahonb777/web-to-app Clone 路径source/gitignored 分析日期2026-04-13 分析方法:随机采样 + 关键文件逐行精读 + grep 证据链


一、项目元数据

指标
创建时间 2025-11-265 个月)
最后推送 2026-04-12
Stars / Forks 2465 / 353
仓库大小 19.6 MBKotlin 源码 33MB
提交数 仅 14 次(典型代码 dump非社区开发
文件数 522 个 .kt 文件,约 10 万行
技术栈 Kotlin 1.9 + Jetpack Compose + Room + KSP + Coroutines + Flow
versionCode 32v1.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:210com.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 定义统一接口(loadUrlevaluateJavascriptgetShields...
  • 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-284downloadPhpBinary gradle taskpmmp/PHP-Binaries 下载 PHP 8.4PhpAppRuntime.kt:70-72 优先从 nativeLibraryDir 加载(绕 SELinux execute_no_trans
Python PythonRuntime.kt + ProcessBuilder 真:下载 CPython支持 Flask/Django/FastAPI
Go GoRuntime.kt + ProcessBuilder 轻度:只支持预编译的 Go 程序
"Linux" PerformanceOptimizer.kt2809 行) 名不副实:其实是纯 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 行)

铁证 3Google Play 订阅 —— BillingManager.kt:15-25

  • 6 个 SKUpro_monthly/quarterly/yearlyultra_monthly/quarterly/yearly
  • 集成 com.android.billingclient:billing-ktx:7.0.0
  • 订阅检查:第 300-328 行

评价:开源的是引流版,真正的商业版有闭源后端。作者的变现逻辑是清晰的。


5. 加密与加固 —— 教科书级

crypto/15 文件4459 行)

  • AesCryptoEngine.ktAES-GCM + PBKDF2 派生
  • KeyManager.kt:48-95:按包名+签名派生,每个 APK 独立密钥
  • AssetEncryptor.kt + SecureAssetLoader.kt:资源加密加载

disguise/5 文件2773 行) —— 浏览器指纹伪装:

  • BrowserDisguiseEngine.kt:39-80 三层架构:
    • Level 1BrowserKernelHTTP 头 + 基础 JS
    • Level 2-522 个指纹向量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_scriptspermissionsbackground
    • 生成虚拟 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 headeranthropic-version: 2023-06-01
  • 资源文件 litellm_model_prices.json39KB包含 100+ 模型即时价格
  • 无硬编码 API Keygrep 未命中 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 和激活码系统。