ink

  
打造卓越的触控笔应用。降低开发者进入高性能、精美墨迹体验的门槛。支持在 Android 和服务器端 JVM 上使用墨迹(目前在 Linux for x86_64 上受支持)。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2026 年 9 月 9 日 1.0.0 - - 1.1.0-alpha08

声明依赖项

如需添加 Ink 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
  
    implementation "androidx.ink:ink-authoring:1.1.0-alpha04"
    implementation "androidx.ink:ink-authoring-compose:1.1.0-alpha04"
    implementation "androidx.ink:ink-brush:1.1.0-alpha04"
    implementation "androidx.ink:ink-brush-compose:1.1.0-alpha04"
    implementation "androidx.ink:ink-geometry:1.1.0-alpha04"
    implementation "androidx.ink:ink-geometry-compose:1.1.0-alpha04"
    implementation "androidx.ink:ink-nativeloader:1.1.0-alpha04"
    implementation "androidx.ink:ink-rendering:1.1.0-alpha04"
    implementation "androidx.ink:ink-storage:1.1.0-alpha04"
    implementation "androidx.ink:ink-strokes:1.1.0-alpha04"
    
}

Kotlin

dependencies {


    implementation("androidx.ink:ink-authoring:1.1.0-alpha04")
    implementation("androidx.ink:ink-authoring-compose:1.1.0-alpha04")
    implementation("androidx.ink:ink-brush:1.1.0-alpha04")
    implementation("androidx.ink:ink-brush-compose:1.1.0-alpha04")
    implementation("androidx.ink:ink-geometry:1.1.0-alpha04")
    implementation("androidx.ink:ink-geometry-compose:1.1.0-alpha04")
    implementation("androidx.ink:ink-nativeloader:1.1.0-alpha04")
    implementation("androidx.ink:ink-rendering:1.1.0-alpha04")
    implementation("androidx.ink:ink-storage:1.1.0-alpha04")
    implementation("androidx.ink:ink-strokes:1.1.0-alpha04")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

Ink 版本 1.1

版本 1.1.0-alpha08

2026 年 9 月 9 日

发布了 androidx.ink:ink-*:1.1.0-alpha08。版本 1.1.0-alpha08 中包含 这些提交内容

API 变更

  • 通过 MetalRenderer 为 KMP iOS 添加了渲染支持,该支持基于 KMP 通用 API,用于实现核心功能,并位于选择启用注解 ExperimentalInkCrossPlatformRenderingApi
  • Target.TEXTURE_ANIMATION_PROGRESS_OFFSET 重命名为 Target.PAINT_ANIMATION_PROGRESS_OFFSET。(I8809f)
  • 添加了重载 ImmutableAffineTransform.translate(float x, float, y)MutableAffineTransform populateFromTranslation(float x, float y) (I8809f)
  • DampingNode 属性从 dampingSource 重命名为 dampOver (Id3178)
  • DampingNode 属性从 dampingGap 重命名为 strength (I69432)
  • 在定义 EasingFunction.CubicBezier 时使用了 Vec 类型,而不是 Float (I69432)
  • 为网格编辑橡皮擦函数 Stroke.subtractStroke.split 添加了 WorkerThread 注解 (I69432)

bug 修复

  • 使 Brush 示例与 KMP 兼容 (I77125)

版本 1.1.0-alpha07

2026 年 8 月 12 日

发布了 androidx.ink:ink-*:1.1.0-alpha07。版本 1.1.0-alpha07 中包含 这些提交内容

API 变更

  • 修复了影响密集粒子笔刷的性能回归问题,并根据 API 反馈更新了 Brush.Version 常量 (I87f0f)

版本 1.1.0-alpha06

2026 年 7 月 29 日

发布了 androidx.ink:ink-*:1.1.0-alpha06。版本 1.1.0-alpha06 中包含 这些提交内容

API 变更

  • BrushFamily 子类型的 API 添加了 calculateMinimumRequiredVersion 方法。(I338c9)
  • 公开了 AffineTransform 组件字段 (Ic2ec3)
  • 修复了 InProgressStrokesView 中的内存泄漏问题,改进了实验性部分笔画橡皮擦视觉工件,改进了自定义笔刷纹理层的 protobuf 表示法 (I6ff86)
  • MutableAffineTransform 添加了初始化构造函数(以与 ImmutableAffineTransform 匹配)(I96ec7)
  • 添加了 InProgressStroke.clear (Ie0032)
  • 为具有可变和不可变子类的数据结构添加了 toImmutable 方法 (I53835)
  • KMP 迁移(Icbf38b/521850119b/534309122

bug 修复

  • 进一步支持笔刷版本控制和纹理动画。(Iea9ba)

版本 1.1.0-alpha05

2026 年 7 月 15 日

发布了 androidx.ink:ink-*:1.1.0-alpha05。版本 1.1.0-alpha05 中包含 这些提交内容

API 变更

  • 实验性发布了新的橡皮擦类型,称为“部分笔画”“网格编辑”或“像素”橡皮擦,用于编辑笔画几何图形和拆分笔画,而不是删除整个笔画或使用背景颜色遮盖笔画。已知问题包括剪切边缘缺少抗锯齿功能,以及没有用于保存已擦除的 PartitionedMesh 结果的序列化 API,这些问题将在未来的版本中得到解决。
  • StrokeInputBatchSerialization.decode 添加了缺失的 Throws 注解,需要更新该方法的 Java 使用者。(I83473b/522256938)

bug 修复

  • 修复了因数值精度问题而导致的原生崩溃问题(I2e1f06618e69b/523190724
  • 舍弃了 BrushTipExtruder 中的退化挤出 (469b629)
  • 修复了 InProgressStrokesView 中的 RejectedExecutionException (b/526696762)

版本 1.1.0-alpha04

2026 年 6 月 17 日

发布了 androidx.ink:ink-*:1.1.0-alpha04。版本 1.1.0-alpha04 中包含 这些提交内容

API 变更

  • 修复了浮点精度问题,这些问题会导致完成的笔画中出现视觉工件,并影响操作系统升级后的某些设备

  • 为存储模块添加了 KMP 通用 API(从 ByteArray 到 Java InputStream/OutputStream,反之亦然)。

  • 添加了 BrushBehavior.developerComment 属性,用于保存说明自定义笔刷系列设计的元数据。此属性旨在支持笔刷设计器界面。

  • 修复了 CanvasInProgressStrokesRenderHelperV33 中线程一致性检查方面的 bug。

  • 修复了处理 MotionEvent 可选字段(例如倾斜度、压力)时的一些 bug。

  • 改进了自定义笔刷 API 的文档。

  • 添加了新的 BrushPaint.ColorFunction 类型。

版本 1.1.0-alpha03

2026 年 5 月 19 日

发布了 androidx.ink:ink-*:1.1.0-alpha03。版本 1.1.0-alpha03 中包含 这些提交内容

API 变更

  • 公开了以编程方式自定义 Ink 笔刷的 API (I8e2e1)
  • BrushPaint.TextureLayer 拆分为更具体的子类 (I8848a)

版本 1.1.0-alpha02

2026 年 4 月 22 日

发布了 androidx.ink:ink-*:1.1.0-alpha02。版本 1.1.0-alpha02 中包含 这些提交内容

API 变更

  • 公开了 BrushFamily.decode 的重载,用于指定最大版本兼容性 (I1c7bc)
  • BrushFamily 序列化 API 从实验性 API 升级为正式 API (Idd16e)

bug 修复

  • 修复了在某些设备上使用 InProgressStrokesView.maskPath 时出现的闪烁问题(I1c7bcb/496920044

版本 1.1.0-alpha01

2026 年 3 月 11 日

发布了 androidx.ink:ink-*:1.1.0-alpha01。版本 1.1.0-alpha01 中包含 这些提交内容

新功能

  • 修复了各种小 bug

API 变更

  • 添加了 InProgressShape.isCanceled,修复了创作模块中的并发问题。(Ibfd32b/474385518b/470695777)
  • 向 Java 公开了 CanvasStrokeRenderer.createInProgressStroke.updateShape 的零参数版本(Id80a1b/457715938

bug 修复

  • 修复了在 API 29-32 中从窗口分离/重新附加后导致 InProgressStrokesView 崩溃的 bug,允许 Vec 运算将相同的 MutableVec 作为输入和输出,并将 Proguard 配置合并到一个文件中。(Ia4da0)
  • 将对 graphics-core 的依赖项增加到 1.0.4 (Ibfa18)

版本 1.0

版本 1.0.0

2025 年 12 月 17 日

发布了 androidx.ink:ink-*:1.0.0。版本 1.0.0 中包含 这些提交内容

bug 修复

  • 将对 graphics-core 的依赖项增加到 1.0.4 (Ibfa18)

版本 1.0.0-rc01

2025 年 12 月 3 日

发布了 androidx.ink:ink-*:1.0.0-rc01。版本 1.0.0-rc01 中包含 这些提交内容

bug 修复

  • 更新了依赖项版本。(Iecd04)

版本 1.0.0-beta02

2025 年 11 月 19 日

发布了 androidx.ink:ink-*:1.0.0-beta02。版本 1.0.0-beta02 中包含 这些提交内容

API 变更

  • 实验性自定义低延迟形状 API,修复了各种 bug (Ib8d2f)

bug 修复

  • 改进了 StrokeInputBatch 序列化的浮点精度,修复了重复编码和解码导致的值漂移问题
  • 更强大的系统输入清理功能。
  • 修复了 InProgressStrokes 可组合项中的笔刷纹理支持问题

版本 1.0.0-beta01

2025 年 10 月 22 日

发布了 androidx.ink:ink-*:1.0.0-beta01。版本 1.0.0-beta01 中包含 这些提交内容

bug 修复

  • 为 beta01 版发布做准备,修复了一些 bug (I9900e)
  • 减少了因过多建模输入彼此过于接近而导致的笔画渲染工件。
  • 修复了输入建模中罕见的崩溃问题。

版本 1.0.0-alpha07

2025 年 10 月 8 日

发布了 androidx.ink:ink-*:1.0.0-alpha07。版本 1.0.0-alpha07 中包含 这些提交内容

新功能

  • StockBrushes highlighteremojiHighlighterSelfOverlap 参数,用于替换 InProgressStrokesView rendererFactory
  • 改进了笔画输入平滑的实现,消除了设备测量噪声,但比之前的笔画输入平滑实现更准确地反映了用户输入
  • 改进了与其他 Android/Jetpack API 在角度单位(度与弧度)、转换(倾斜与剪切)等方面的一致性

API 变更

  • 更改了与角度相关的 API 以使用度,并在名称中包含单位,明确了角度转换实用程序中的单位,并同时支持度和弧度,更改了 StockBrushes API 以将库存笔刷版本作为工厂函数参数,并公开了荧光笔刷的自重叠行为控制,将 MutableAffineTransform.populateFromTranslate 重命名为 populateFromTranslation,移除了 InProgressStrokesView.setRenderFactory/getRenderFactory。(Id9eabb/436656418)
  • 将剪切重命名为倾斜,澄清了一些文档,移除了 CanvasStrokeRenderer.strokeModifiedRegionOutsetPx,添加了 InProgressStroke.changesWithTimeIa5e70b/436656418

bug 修复

  • 改进了输入建模,使笔画更准确地反映输入。(I93097)

版本 1.0.0-alpha06

2025 年 8 月 13 日

发布了 androidx.ink:ink-*:1.0.0-alpha06。版本 1.0.0-alpha06 中包含 这些提交内容

新功能

  • 表情符号荧光笔库存笔刷:使用您选择的任何表情符号突出显示文档的各个部分,以添加有趣的风格并帮助保持井井有条。
  • 为几何模块原始形状提供了更多辅助 API
  • 提高了设备兼容性和性能

API 变更

  • 简化了 InProgressStrokesView 的 API,完成了几何图形 API、表情符号荧光笔,从 MutableParallelogram 中移除了工厂函数,转而使用填充方法,支持随机笔刷行为的种子。(I38280)

bug 修复

  • 修复了性能问题以及湿/干颜色一致性问题。(Ifcd1d)

版本 1.0.0-alpha05

2025 年 6 月 18 日

发布了 androidx.ink:ink-*:1.0.0-alpha05。版本 1.0.0-alpha05 中包含 这些提交内容

新功能

  • 用于创作、笔刷和几何模块的 Compose 互操作模块

API 变更

  • 新的 Compose 互操作模块和 API,API 清理 (I0e464)
  • 移除了返回 kotlin.ResultInProgressStroke.enqueueInputs/updateShape 方法,客户端应改用 enqueueInputsOrThrowenqueueInputsOrIgnore 等方法。InProgressStroke.getNeedsUpdate 已重命名为 isUpdateNeededInProgressStroke.populateOutlinePosition 现在返回其输出参数,以允许调用链,这与其他 Ink 方法一致。TextureBitmapStore 接口已从渲染模块移至笔刷模块。BoxAccumulator.populateFrom 现在接受可为 null 的不可变 Box,而不是可变的 BoxAccumulator,以更清楚地了解哪些内容发生了变化,调用方应将 boxAccumulator.add(other) 更改为 boxAccumulator.add(other.box)。移除了 BrushUtil.toBuilderWithAndroidColor/createBuilderWithAndroidColor,请在构造后改用 Brush.BuildersetAndroidColor。(Ia7155)
  • 之前是实验性属性的 InProgressStrokesView.textureBitmapStore 现在是私有属性。此属性仍有公共访问器。(I1d706)

bug 修复

  • 改进了包含许多粒子的自定义笔刷的性能。

版本 1.0.0-alpha04

2025 年 4 月 9 日

发布了 androidx.ink:ink-*:1.0.0-alpha04。版本 1.0.0-alpha04 中包含 这些提交内容

新功能

  • 引入了用于自定义 BrushFamily 对象的新实验性 API,从而实现了铅笔和激光笔等新笔刷。该 API 允许加载由此 proto 定义的笔刷。(I8809a)

版本 1.0.0-alpha03

2025 年 2 月 12 日

发布了 androidx.ink:ink-*:1.0.0-alpha03。版本 1.0.0-alpha03 中包含 这些提交内容

新功能

  • 节省了磁盘和网络空间:StrokeInputBatch 的序列化,节省了许多代码行,生成的对象仅占传统存储笔画大小的一小部分。(Ie898d)
  • 套索选择:虚线笔刷用于绘制选择笔画,以及用于将选择笔画转换为 PartitionedMesh 以进行几何图形查询的函数。(Ia38a0)

版本 1.0.0-alpha02

2024 年 12 月 11 日

发布了 androidx.ink:ink-*:1.0.0-alpha02。版本 1.0.0-alpha02 中包含 这些提交内容

API 变更

  • 修复了各种 bug。(I05dd8)

外部贡献

  • 废弃了 BuildCompat.isAtLeastV。调用方应直接针对 35 检查 SDK_INT。(I294d1)

版本 1.0.0-alpha01

2024 年 10 月 2 日

发布了 androidx.ink:ink-*:1.0.0-alpha01。版本 1.0.0-alpha01 中包含 这些提交内容

新功能

  • 一个模块化且可配置的库,可让您轻松创建、渲染和操控在应用中创作的精美墨迹笔画。

API 变更

新模块可帮助开发者打造丰富的墨迹体验:

  • 创作:使用 InProgressStrokesView 在收到输入时实时渲染笔画,实现高性能、低延迟。
  • 渲染:使用 CanvasStrokeRendererViewStrokeRenderer 绘制完成的墨迹笔画,作为应用界面的一部分。
  • 笔画:用于墨迹功能的核心数据类型。
  • 笔刷:可配置的规范,用于说明笔画在响应用户输入时的外观和行为。
  • 几何图形:几何运算(如交集和覆盖)为选择和擦除等工具提供支持。