跳到主要内容

运行时体积(Runtime Sizes)

更新时间(Last updated):2026 年 1 月

Web(JS)

说明:体积的大头通常是 WASM 库(library),下表主要体现这一部分。

压缩方式(Compression):brotli -9

Runtime未压缩(Uncompressed)压缩后(Compressed)
canvas-lite707KB222KB
canvas1728KB567KB
webgl22179KB648KB

React

React 运行时(Runtime)可参考上面的 Web(JS) 体积说明。

React Native

React Native 运行时(Runtime)可参考 AndroidApple 小节。

Apple

下表展示在 iOS 空项目中引入 RiveRuntime 后的体积影响(对比 App Thinning 报告计算):

平台(Platform)下载体积增量(Download Size Impact)安装体积增量(Install Size Impact)
Universal~1.67MB~4.66MB

Android

目标架构(Target)下载体积(Download Size)安装体积(Install Size)
ARM-v8a2.40MB7.03MB
ARM-v7a2.32MB6.00MB

组成(Components)

Rive Android 二进制(binary)主要由以下部分组成:

  • Kotlin 代码(编译为 DEX)
  • Rive Android 本地共享库(native shared library):librive-android.so
    • 由 Rive Android C++ 绑定(bindings)、Rive C++ 运行时(runtime)和 Rive Renderer 组成
    • 还包含下文“第三方依赖(Third Party Dependencies)”中的静态依赖(当前不含 Luau)
  • C++ 标准库(shared .so)
    • ARM-v8a 参考体积:下载 394KB,安装 1.2MB
  • Android 依赖:
    • Compose(runtime / ui / ui-android):Compose 支持
    • Lifecycle(runtime-ktx / runtime-compose):Compose 生命周期感知
    • Startup(startup-runtime):自动初始化
    • ReLinker:Rive 本地库加载
    • Volley:网络加载

摊销与 R8(Amortization and R8)

上面的数字基于“空应用”测量。若你的应用已包含某些依赖(例如 Jetpack Compose),新增 Rive 时这些依赖可能不会再次增加体积。

C++ 标准库也会在多个原生依赖间共享。

此外,发布构建(release build)启用 R8 后会压缩并移除未使用代码/资源,可进一步降低体积影响。请确认 Gradle 开启:isMinifyEnabled = true

后续优化方向(Future Work)

可考虑的体积优化方向:

  • 音频支持从 Miniaudio 切换到 Oboe
    • 当前可通过自行编译 Rive Android 并使用 -PnoAudio 关闭 Miniaudio
  • 模块化运行时(runtime),按需引入 Compose 支持
  • 将 Volley 改为可选依赖(opt-in)
  • 调整 C++ 编译参数,偏向体积而非速度(需额外性能验证)

第三方依赖(Third Party Dependencies)

公共 Rive C++ 运行时(runtime)包含若干开源第三方依赖,这些依赖会影响二进制体积:

依赖(Dependency)作用(Reason)
HarfBuzz文本渲染(Text rendering)
Miniaudio音频支持(Audio support)
SheenBidi双向文本支持(Bidirectional text support)
Yoga布局(Layout)
Luau Interpreter脚本支持(Scripting support)