Median Browser 是一款面向 Android 的轻量浏览器,目标不是堆叠大量在线服务,而是在尽可能小的体积内,提供快速、稳定、可控的网页浏览体验。它基于设备自带的 Android System WebView,尽量复用系统已经提供的渲染、安全与媒体能力,把更多精力放在标签管理、隐私控制、下载、用户脚本和低内存设备适配上。
项目采用本地优先设计:书签、历史记录、站点设置、用户脚本、过滤规则和备份默认保存在用户自己的设备中,不依赖账号体系、云同步、广告 SDK 或分析 SDK。对于希望浏览器保持简单、透明、低占用,并愿意自行管理数据的用户,Median 提供了一套比普通 WebView 套壳更完整的浏览器功能。
Median 的核心取向是 快、稳、轻、可控:
- 快:缩短网页请求热路径,按设备能力预热和保留 WebView,减少主线程同步 I/O。
- 稳:针对低内存、renderer 崩溃、后台标签和下载中断设计恢复策略。
- 轻:控制 APK 体积和常驻资源,不依赖大型第三方运行库。
- 可控:广告过滤、第三方 Cookie、弹窗、脚本、兼容模式等均可按网站调整。
它适合以下用户:
- 希望使用轻量浏览器,而不需要账号、推荐流或云服务的人;
- 在意本地数据、隐私控制和源码可审计性的人;
- 经常使用用户脚本、广告过滤、下载或多标签功能的人;
- 使用 Android 8.0 及以上设备,希望浏览器在低内存环境下仍保持稳定的人。
Median 不是独立浏览器内核。网页兼容性、JavaScript 性能、媒体格式和安全补丁仍取决于设备上的 Android System WebView。项目的目标是在这一基础上,提供一个更完整、更轻量、更可控的浏览器外壳。
当前版本:2.1.9
最低系统:Android 8.0(API 26)
目标系统:Android 16(API 36)
Median 使用设备上的 Android System WebView。网页渲染能力、编解码器、部分网站兼容性和安全补丁取决于设备所安装的 WebView 版本。
- 多标签浏览、固定标签、标签冻结和会话恢复。
- 书签、历史记录、站点设置及离线 MHTML 保存。
- 阅读模式、系统朗读、翻译、页内查找和桌面模式。
- 标签页根据设备内存分级保留,后台页面可冻结并按需重建。
- 广告过滤订阅、元素隐藏和常见跟踪参数清理。
- HTTPS Only、Safe Browsing、严格混合内容策略和站点级兼容模式。
- 第三方 Cookie、弹窗、媒体自动播放等权限可按站点控制。
- 独立进程隐私窗口;无法可靠隔离时不伪装成无痕模式。
- Android Keystore 密码库及加密完整备份。
- 默认关闭危险的
file://跨域访问和不受控本地文件访问。
- 支持用户脚本匹配、权限声明、菜单命令和受限 GM 网络请求。
- 高权限能力要求显式
@grant,并使用随机令牌、来源校验和脚本匹配范围复核。 - 跨域请求逐跳检查
@connect,阻止 HTTPS 降级及远程页面访问本机或私网地址。 - 脚本值先更新内存并异步落盘,减少 UI 线程同步 I/O。
- Median 内部单连接下载,不依赖 Android DownloadManager。
- 支持断点续传、自动重试、真实进度、速度和预计剩余时间。
- 保留 Cookie、User-Agent 和安全的 Referer 策略。
- 自动识别最终文件名、MIME 类型和 APK 文件结构。
- 下载索引合并写入,暂停、完成和失败状态立即保存。
提供低功耗、标准和极限三档策略:
- WebView 预热和热标签数量按设备内存动态调整。
- 当前页面 renderer 保持高优先级,后台页面主动降级或冻结。
- Android 12 及以上使用 Performance Hint API 提示主线程与 RenderThread 负载。
- 极限档可启用“网络直通”,跳过 Median 广告请求扫描,缩短请求热路径;开启后广告和跟踪过滤会减弱。
- 内存压力后暂时停止预热,避免低内存设备反复抖动。
- 自定义标题、副标题、Logo、壁纸、搜索框和快捷网站。
- 支持自定义文字配色、渐变、字距和本地 Logo 图片。
- 支持受限自定义 CSS,以及无联网、无同源权限的本地 HTML 模式。
- 用户图片保存在应用私有目录,不上传,也不嵌入 APK。
- 修复部分设备上标签卡片突然无法点击的问题。
- 标签卡片直接处理点击和长按,不再依赖不稳定的
ListView.onItemClick()。 - 关闭按钮不再抢占整行焦点。
- 点击时根据标签对象重新定位索引,避免列表复用或标签变化造成位置失效。
本版本还包含以下快稳改进:
- 网站级兼容模式及 HTTPS 加载失败后的安全重试提示。
- 广告过滤状态缓存、按需读取请求头和可选媒体嗅探,减少请求热路径开销。
- Cookie 合并刷新和用户脚本数据异步写入。
- 更保守的 WebView 预热时机和 renderer 崩溃恢复。
- 后台任务拒绝时不再静默丢弃关键工作。
Median 默认策略偏向隐私和安全,以下网站可能需要启用站点级兼容模式:
- 仍依赖 HTTP 或混合内容的旧网站。
- 依赖第三方 Cookie 的登录、支付或企业 SSO 页面。
- 被广告规则误伤的脚本、验证码或跳转页面。
- 依赖用户触发弹窗完成 OAuth 或支付授权的网站。
兼容模式只应对可信网站开启。Safe Browsing 和证书校验不应为追求兼容性而关闭。
- JDK 17
- Android SDK Platform 36
- Android Build Tools
- Gradle 8.13,或项目提供的 Gradle Wrapper
./tools/static_checks.sh
./build.sh输出目录:
app/build/outputs/apk/
app/build/outputs/bundle/
export MEDIAN_KEYSTORE=/absolute/path/release-key.p12
export MEDIAN_STOREPASS='your-store-password'
export MEDIAN_KEY_ALIAS='your-key-alias'
export MEDIAN_KEYPASS='your-key-password'
./build.sh --release仓库不包含发布密钥。要让未来正式发布版覆盖安装现有版本,必须同时满足:
applicationId保持为com.xinyv.median.compat;versionCode高于已安装版本;- 使用与旧版本相同的发布证书签名。
项目提供严格体积构建脚本:
./tools/build_500kb_apk.sh该脚本会构建确定性的签名 APK,并在最终 APK 超过 500 KiB 时使构建失败。项目内置精简的 AndroidX WebKit 兼容实现,以支持 document-start 脚本,同时避免引入无关运行库。
正式发布前,至少应完成:
tools/static_checks.sh- Java、资源、DEX 和签名完整构建
- 多 Android 版本真机测试
- 多标签、视频、下载和用户脚本压力测试
- Google Play 预发布报告与封闭测试
相关文档:
RELEASE_CHECKLIST.md:发布检查清单VALIDATION.md:当前验证状态SECURITY.md:安全边界与漏洞报告PRIVACY_POLICY.md:隐私政策PLAY_DATA_SAFETY.md:Google Play 数据安全申报参考WEBKIT_COMPATIBILITY.md:WebKit 兼容层说明THIRD_PARTY_NOTICES.md:第三方声明
Median 的书签、历史、站点设置、脚本、过滤规则和备份默认保存在本机。项目运行时不依赖广告或分析 SDK。网站本身、用户安装的脚本、搜索引擎和 Android System WebView 仍可能按照各自政策处理网络数据。
- 用户脚本属于第三方代码,只应安装可信来源的脚本。
- 密码库使用 Android Keystore 和 AES-GCM,但未经独立安全审计,不应替代经过长期审计的专业密码管理器。
- 网站证书错误不会被自动忽略。
- 兼容模式会降低部分隐私保护,仅建议用于可信网站。
Copyright © 2026 Median Browser contributors. All rights reserved.
源码仅供授权所有者审阅和构建。未经版权持有者书面许可,不授予复制、修改、发布、分发、再许可或销售权限。完整条款见 LICENSE。