news 2026/10/3 7:31:22

Capacitor Android 运行时演进全景:从 8.4.2 回溯 5 代版本的核心修复与特性速览

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Capacitor Android 运行时演进全景:从 8.4.2 回溯 5 代版本的核心修复与特性速览
  • 移动开发
  • 跨平台
  • 插件系统
  • 前端

【免费下载链接】capacitor

Build cross-platform Native Progressive Web Apps for iOS, Android, and the Web ⚡️

项目地址:https://gitcode.com/gh_mirrors/ca/capacitor
点击查看免费下载

导读

本文基于当前仓库 android/CHANGELOG.md 整理,系统梳理 Capacitor Android 运行时从 8.4.2 回溯至 3.0.0 期间各版本的关键变更。全文以「Bug Fixes / Features」双主线展开,覆盖系统栏(SystemBars)与安全区适配、Capacitor Http 网络栈、WebView 生命周期、插件权限体系、Gradle/AGP 构建链、本地资源服务器等核心模块,并逐一映射到 android/capacitor 下的源码与配置,帮助升级排障、特性选型与源码深挖。

说明:按 2025-12 的 8.0 大版本发布节奏,8.4.x 为当前仓库最新维护线;「Note: Version bump only」条目表示仅随 monorepo 版本号发布,无 Android 侧实质变更。

一、8.x 时代(2025–2026):SystemBars 与 Edge-to-Edge 全面落地

8.x 是 Android 运行时向 Edge-to-Edge(全面屏沉浸式)规范迁移的关键时期,绝大多数提交围绕「系统栏样式、安全区 inset、键盘与刘海屏」展开。

1.1 SystemBars 插件成为一等公民

  • 8.0.0-beta.0(2025-11)正式引入 System Bars Plugin(PR #8180),随后 8.0.0 的 Improving SystemBars inset handling(PR #8268)完善其 inset 计算。该插件在源码中为 android/capacitor/src/main/java/com/getcapacitor/plugin/SystemBars.java 中的SystemBars extends Plugin,通过WindowInsetsControllerCompat控制状态栏/手势导航栏的显隐与明暗,并注入--safe-area-inset-*CSS 变量。
  • 8.3.0 起改用原生安全区 inset(PR #8384),并在 8.4.0 使safe-area-inset-x在 API ≤ 34 也可用(PR #8424)、尊重insetsHandling: disable(PR #8481)、只显示被请求的系统栏(PR #8480)。

1.2 安全区与键盘协同处理

  • 7.1.0 增加adjustMarginsForEdgeToEdge配置(PR #7885)与 EdgeToEdge 兼容(PR #7871)。
  • 8.0.1 修复「键盘弹出时底部 inset 被误加」问题(PR #8280);8.1.0 修复handleOnConfigurationChanged下样式获取错误(PR #8295);8.2.0 修复固定 WebView 时跳过 margin 操作(PR #8309)、按主题设置窗口背景色(PR #8306)。
  • 实现要点:calcSafeAreaInsets在 IME 可见时强制bottom=0,并在 WebView 版本 ≥140/144 时启用 Chromium 安全区/键盘修复分支(见 SystemBars.java L41-L43)。

1.3 网络与配置补充

  • 8.4.0 新增PluginCall.getDouble(PR #7638,见 PluginCall.java L233)。
  • 8.3.0 修复server.url含路径时的解析(PR #8391)、fetch 处理 URL 对象(PR #8386)。
  • 8.0.2 修复 AGP 9.0 不再支持proguard-android.txt的构建链问题(PR #8315);8.4.2 修复图片捕获 Intent 的 URI 权限显式授予(PR #8526)。

二、7.x 时代(2024–2025):Edge-to-Edge 过渡与 WebView 生命周期

  • 7.1.0 加入「文档加载前向 WebView 注入外部 JS」能力(PR #7864,对应WebViewListener/JSInjector)。
  • 7.0.0-beta.0 引入全局initialFocus配置(PR #7775),最终落位于android.initialFocus(CapConfig.java L306)。
  • 7.3.0 暴露appStartPath(PR #8019)并在 bridge reset 时移除全部插件监听器(PR #7962);7.4.2 修复 HTTPx-www-form-urlencoded的 key/value URL 编码(PR #8037)。

三、6.x 时代(2023–2024):Http 代理走向成熟

  • 6.1.0 起server.url结尾/不再崩溃(PR #7426)。
  • 6.0.0-rc.x 密集修复 Http 代理:URL 参数编码(#6586)、代理 URL 端口(#7273、#7341)、Request 对象代理(#7348)、keep 原始 URL 属性(#7329)、GET 走自定义 handler(#6818)、错误处理交给 WebView(#7286)、URLSearchParams 支持(#7374)、POST 不被代理(#7395)。
  • 6.0.0-alpha.x 增加 FormData 写入、Request 对象支持(#6919、#7001、#24b3cc1)、content-type计数修复(#7161)、本地 URL 使用未打补丁的 fetch(#6953)、ReadableStream 解析(#6919)。
  • 6.0.0-beta.0 起支持 Amazon Fire WebView(#6603)。

四、5.x 时代(2023):FormData、Cookies 与 R8/ProGuard 修复

  • 5.2.0 正式支持 FormData 请求(#6708);5.4.0 支持 fetch 的 Request 对象与 XHR 响应类型(#09bd040、#2fe4535);5.5.0/6.0.0-alpha.1 提供onRenderProcessGone自定义逻辑(#6946、#6966,见 WebViewListener.java L53)。
  • Cookies:5.2.0 前 sanitize URL(#ca40634)、5.2.3 隐藏 httpOnly cookies(#0cc927e)、5.3.0 初始化时移除会话 cookie(#037863b)、5.4.1 支持自定义 Android scheme 取 cookie(#6b5ddad)。
  • R8/ProGuard:5.2.3 修复 R8 移除插件类(#6783),规则见 android/capacitor/proguard-rules.pro(-keep @com.getcapacitor.annotation.CapacitorPlugin public class *)。
  • 5.1.0 增加 SSL 排除域检查(#7906d36);5.0.0-beta.3 升级 Gradle 8.0.2 / AGP 8.0.0(#6497)。

五、4.x 时代(2022):Config 重构与 Plugin 基础设施

  • 4.7.0:Config 自定义文件路径(#6264)、SSL Pinning(#6314)、加载 content 目录外资源(#6301)。
  • 4.6.0:Plugin Instance 支持(#6073)、Set-Cookie 持久化(#57f8b39)。
  • 4.5.0:旧版 addJavascriptInterface bridge 开关(#6043,对应android.useLegacyBridge)、Cookiesget cookies方法(#ba1e770)。
  • 4.4.0:ServerPath 对象(#6008)、document.cookie setter 同步化(#2272abf)。
  • 4.3.0:Capacitor Cookies & Capacitor Http 核心插件正式引入(#d4047cf)。
  • 4.0.0:android.minWebviewVersion(#5768)、自定义错误页(#5723)、addWebMessageListener优先(#5427)、目标 SDK 31/32(#5442/#5611)、Java 11(#5552)。

六、3.x 时代(2021–2022):权限体系与 Config 奠基

  • 3.0.0-alpha.x:插件注解格式支持多权限/空权限(#3822)、handlePermissions(#3768)、按 alias 检查权限(#4062)、CapConfig.loadDefault()并废弃 v2 构造器(#3964)、WebColor颜色解析(#3947)、配置重构(#3778)、onConfigurationChanged生命周期钩子(#3936)、自动导入 Android 插件(#3788)。
  • 3.4.0:PluginCall.getLong(#5235);3.3.0:WebView 重载能力(#5184);3.2.0:不注入 map 文件(#4893)。

七、升级与排障速查

  • 构建链:minSdkVersion=24(8.0.0-alpha.1 起,见 android-template/variables.gradle L2),当前模板 compile/targetSdk=36,AGP 需 ≥9.0 兼容(8.0.2)。库验证命令:./gradlew clean lint build test -b capacitor/build.gradle(见 android/package.json L23)。
  • 降级/白屏:检查 SystemBarsinsetsHandling(css/disable)与 viewportviewport-fit=cover;Http 代理请关注 6.0.0-rc.1 的 URL 参数编码修复。
  • 插件消失:核对 ProGuard keep 规则是否匹配 proguard-rules.pro。

附:版本时间线(Android 侧)

版本时间主题
8.4.22026-07URI 权限修复
8.4.02026-06SystemBars inset 完善、getDouble
8.3.x2026-03~05原生安全区 inset、server.url 解析
8.0.02025-12SystemBars inset 重构
7.4.x2025-06~07appStartPath、displayCutout
7.0.02025-01initialFocus
6.1.x2024-06~08URL 编码、FormData 旧设备
6.0.02024-04Http 代理成熟、Fire WebView
5.6.02023-12Fire WebView 支持
5.2.02023-07FormData 支持
4.7.02023-02SSL Pinning、Config 路径
4.3.02022-09Cookies & Http 核心插件
3.3.02021-11WebView 重载、getLong

全部条目均为本仓库 android/CHANGELOG.md 原文所载;各源码路径对应当前 8.4.2 分支实现,版本与行为随时间演进,请以你所使用版本的实际源码为准。

  • 移动开发
  • 跨平台
  • 插件系统
  • 前端

【免费下载链接】capacitor

Build cross-platform Native Progressive Web Apps for iOS, Android, and the Web ⚡️

项目地址:https://gitcode.com/gh_mirrors/ca/capacitor
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 7:30:23

医院数字食堂上线7天交付的工程化拆解:数据导入与上线排期

作为一个长期跟医院信息化项目打交道的工程师,我见过太多食堂系统项目因为实施不规范而延期。数字食堂上线能不能压到7天,本质上是工程化能力的问题。本文从技术视角,拆解一套可复用的上线交付模型。整个上线可以抽象为两个阶段:准…

作者头像 李华
网站建设 2026/10/3 7:29:48

AI攻防 越狱攻击

提示词注入是换个任务,越狱是换个人格。 AI 的防线不是被"说服"的,是被"顶掉"的:只要它接受了"我现在是暴力疯子 / 魅魔"这个设定, 安全审查就在角色逻辑里失去了优先级——它会觉得,&q…

作者头像 李华
网站建设 2026/10/3 7:29:11

想做微信小程序怎么做?零代码三步搞定,新手也能当天上线开张

现在越来越多线下老板意识到,光靠门店自然客流已经不够了,都想赶紧把小程序做起来。可一打听才发现,找人开发少说也要几万块,周期还长,等小程序做出来黄花菜都凉了。更头疼的是,自己完全不懂技术&#xff0…

作者头像 李华
网站建设 2026/10/3 7:28:10

离线 OCR 实测:单张 2.5 秒里检测占 2.39 秒,最短边调小后 0.41 秒

离线识别现在不需要任何接口。一条 pip 命令装完,31.76 MB 的模型已经躺在包目录里,我把代理环境变量指到一个不存在的端口,识别照样跑,中文 OCR 走本地这条路是通的。 但装上不等于能用。我在本机(WSL,分到…

作者头像 李华
网站建设 2026/10/3 7:28:07

15.ENS160传感器使用秘籍:一文看懂多气体检测核心技巧

ENS160是一款基于MOX技术的数字多气体传感器,集成TrueVOC算法,可直接输出TVOC(ppb)、eCO2(ppm)和AQI(1-5级)等高级空气质量数据,大幅降低主控算力负担。其采用双电源设计…

作者头像 李华
网站建设 2026/10/3 7:27:52

毕设开源 yolov11骨折检测医疗辅助系统(源码+论文)

文章目录0 前言1 项目运行效果2 课题背景2.1 研究背景2.2 国内外研究现状2.3 研究意义3 设计框架(骨折检测系统设计框架说明)3.1. 系统架构图3.2. 技术选型3.2.1 核心组件3.2.2 辅助工具3.3. 核心模块设计3.3.1 YOLO模型训练模块训练流程图关键伪代码3.3…

作者头像 李华