잉크

  
동급 최고의 펜 앱을 만들 수 있도록 지원합니다. 고성능의 아름다운 잉크 환경을 위한 개발자 진입 장벽을 낮춥니다. Android 및 서버 측 JVM에서 잉크 입력을 지원합니다 (현재 x86_64용 Linux에서 지원됨).
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
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")
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

잉크 버전 1.1

버전 1.1.0-alpha08

2026년 9월 9일

androidx.ink:ink-*:1.1.0-alpha08이 출시되었습니다. 버전 1.1.0-alpha08에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • 핵심 기능을 위한 KMP 공통 API를 기반으로 선택 주석 ExperimentalInkCrossPlatformRenderingApi 아래에 MetalRenderer를 통해 KMP iOS 렌더링 지원 추가
  • 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)
  • Float 대신 EasingFunction.CubicBezier를 정의할 때 Vec 유형 사용 (I69432)
  • 메시 수정 지우개 함수 Stroke.subtractStroke.splitWorkerThread 주석 추가 (I69432)

버그 수정

  • 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 이전 (Icbf38, b/521850119, b/534309122)

버그 수정

  • 브러시 버전 관리 및 텍스처 애니메이션에 대한 지원이 추가되었습니다. (Iea9ba)

버전 1.1.0-alpha05

2026년 7월 15일

androidx.ink:ink-*:1.1.0-alpha05이 출시되었습니다. 버전 1.1.0-alpha05에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • 획 전체를 삭제하거나 배경색으로 마스킹하는 대신 획 지오메트리를 수정하고 획을 분할하는 '부분 획', '메시 수정' 또는 '픽셀' 지우개라는 새로운 지우개 유형의 실험적 출시 알려진 문제로는 잘린 가장자리의 앤티앨리어싱 부족과 지워진 PartitionedMesh 결과를 저장하는 직렬화 API가 없다는 점이 있으며, 이 문제는 향후 출시에서 해결될 예정입니다.
  • 누락된 Throws 주석을 StrokeInputBatchSerialization.decode에 추가하여 해당 메서드의 Java 소비자의 업데이트가 필요함 (I83473, b/522256938)

버그 수정

  • 숫자 정밀도 문제로 인한 네이티브 비정상 종료 수정 (I2e1f0, 6618e69, b/523190724)
  • BrushTipExtruder에서 퇴화된 돌출 삭제 (469b629)
  • InProgressStrokesViewRejectedExecutionException 수정 (b/526696762)

버전 1.1.0-alpha04

2026년 6월 17일

androidx.ink:ink-*:1.1.0-alpha04이 출시되었습니다. 버전 1.1.0-alpha04에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • OS 업그레이드 후 특정 기기에 영향을 미치며 완성된 획에 시각적 아티팩트가 발생하는 부동 소수점 정밀도 문제 수정

  • 저장소 모듈의 KMP-common API 추가 (Java InputStream/OutputStream 대신 ByteArray로 이동/이동).

  • 맞춤 브러시 패밀리의 디자인을 설명하는 메타데이터를 보유하는 BrushBehavior.developerComment 속성을 추가합니다. 브러시 디자이너 UI를 지원하기 위한 것입니다.

  • CanvasInProgressStrokesRenderHelperV33의 스레딩 일관성 검사에서 버그 수정

  • MotionEvent 선택적 필드 (예: 기울기, 압력) 처리의 일부 버그 수정

  • 맞춤 브러시 API 관련 문서 개선

  • BrushPaint.ColorFunction 유형 추가

버전 1.1.0-alpha03

2026년 5월 19일

androidx.ink:ink-*:1.1.0-alpha03이 출시되었습니다. 버전 1.1.0-alpha03에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • 프로그래매틱 잉크 브러시 맞춤설정 API 공개 (I8e2e1)
  • BrushPaint.TextureLayer를 더 구체적인 하위 클래스 (I8848a)로 분할

버전 1.1.0-alpha02

2026년 4월 22일

androidx.ink:ink-*:1.1.0-alpha02이 출시되었습니다. 버전 1.1.0-alpha02에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • 최대 버전 호환성 (I1c7bc)을 지정하는 BrushFamily.decode의 오버로드를 노출
  • BrushFamily 직렬화 API를 실험용에서 졸업시킴 (Idd16e)

버그 수정

  • 특정 기기에서 InProgressStrokesView.maskPath 사용 시 깜박임 문제 수정 (I1c7bc, b/496920044)

버전 1.1.0-alpha01

2026년 3월 11일

androidx.ink:ink-*:1.1.0-alpha01이 출시되었습니다. 버전 1.1.0-alpha01에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 다양한 작은 버그 수정

API 변경사항

  • InProgressShape.isCanceled 추가, 작성 모듈의 동시 실행 문제 수정 (Ibfd32, b/474385518, b/470695777)
  • CanvasStrokeRenderer.createInProgressStroke.updateShape의 인수가 없는 버전을 Java에 노출 (Id80a1, b/457715938)

버그 수정

  • API 29~32의 창에서 분리/재연결 후 InProgressStrokesView에서 비정상 종료를 일으키는 버그 수정, Vec 작업이 동일한 MutableVec을 입력 및 출력으로 사용하도록 허용, Proguard 구성을 하나의 파일로 병합 (Ia4da0)
  • 그래픽 코어의 종속 항목을 1.0.4 (Ibfa18)로 늘림

버전 1.0

버전 1.0.0

2025년 12월 17일

androidx.ink:ink-*:1.0.0이 출시되었습니다. 버전 1.0.0에는 이러한 커밋이 포함되어 있습니다.

버그 수정

  • graphics-core에 대한 종속 항목을 1.0.4로 늘림 (Ibfa18)

버전 1.0.0-rc01

2025년 12월 3일

androidx.ink:ink-*:1.0.0-rc01이 출시되었습니다. 버전 1.0.0-rc01에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 종속 항목 버전을 업데이트합니다. (Iecd04)

버전 1.0.0-beta02

2025년 11월 19일

androidx.ink:ink-*:1.0.0-beta02이 출시되었습니다. 버전 1.0.0-beta02에는 이러한 커밋이 포함되어 있습니다.

API 변경사항

  • 실험용 맞춤 지연 시간 감소 셰이프 API, 다양한 버그 수정 (Ib8d2f)

버그 수정

  • StrokeInputBatch 직렬화에서 부동 소수점 정밀도 개선, 반복되는 인코딩 및 디코딩으로 인한 값의 드리프트 수정
  • 더 강력한 시스템 입력 정리
  • InProgressStrokes 컴포저블에서 브러시 텍스처 지원 수정

버전 1.0.0-beta01

2025년 10월 22일

androidx.ink:ink-*:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에는 이 커밋이 포함되어 있습니다.

버그 수정

  • beta01 출시 준비를 위한 버그 수정 (I9900e)
  • 모델링된 입력이 너무 가까이 있어 획에 렌더링 아티팩트가 발생하는 문제 감소
  • 입력 모델링에서 드물게 발생하는 비정상 종료 문제 수정

버전 1.0.0-alpha07

2025년 10월 8일

androidx.ink:ink-*:1.0.0-alpha07이 출시되었습니다. 버전 1.0.0-alpha07에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • InProgressStrokesView rendererFactory를 대체하는 StockBrushes highlighteremojiHighlighterSelfOverlap 매개변수
  • 기기 측정 노이즈를 제거하지만 이전 획 입력 스무딩 구현보다 사용자 입력을 더 정확하게 반영하는 획 입력 스무딩 구현 개선
  • 각도 단위 (도 vs. 라디안), 변환 (기울이기 vs. 전단) 등 다른 Android/Jetpack API와의 일관성 개선

API 변경사항

  • 각도 관련 API가 도를 사용하고 이름에 단위를 포함하도록 변경하고, 각도 변환 유틸리티에서 단위를 명확히 하고, 도와 라디안을 모두 지원하고, StockBrushes API가 스톡 브러시 버전을 팩토리 함수 매개변수로 사용하도록 변경하고, 형광펜 브러시의 자체 오버랩 동작 제어를 노출하고, MutableAffineTransform.populateFromTranslatepopulateFromTranslation로 이름을 바꾸고, InProgressStrokesView.setRenderFactory/getRenderFactory를 삭제합니다. (Id9eab, b/436656418)
  • 전단이 기울기로 이름이 변경되고, 일부 문서가 명확해지고, CanvasStrokeRenderer.strokeModifiedRegionOutsetPx가 삭제되고, InProgressStroke.changesWithTime가 추가되었습니다. (Ia5e70, b/436656418)

버그 수정

  • 입력 모델링을 개선하여 획이 입력을 더 정확하게 반영하도록 합니다. (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)

버그 수정

  • 성능 문제와 습식/건식 색상 일관성 문제를 수정합니다. (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.Result를 반환하는 InProgressStroke.enqueueInputs/updateShape 메서드가 삭제되었습니다. 클라이언트는 대신 enqueueInputsOrThrow 또는 enqueueInputsOrIgnore 등을 사용해야 합니다. InProgressStroke.getNeedsUpdate에서 isUpdateNeeded로 이름이 변경되었습니다. 이제 InProgressStroke.populateOutlinePosition는 Ink의 다른 메서드와 일관되게 호출 체인을 허용하도록 출력 매개변수를 반환합니다. TextureBitmapStore 인터페이스가 렌더링 모듈에서 브러시 모듈로 이동되었습니다. BoxAccumulator.populateFrom는 변경 가능한 BoxAccumulator 대신 null을 허용하는 변경 불가능한 Box를 사용하도록 만들어졌으므로 변경되는 항목을 더 명확하게 하려면 호출자가 boxAccumulator.add(other)boxAccumulator.add(other.box)로 변경해야 합니다. BrushUtil.toBuilderWithAndroidColor/createBuilderWithAndroidColor가 삭제되었습니다. 대신 구성 후 Brush.BuildersetAndroidColor를 사용하세요. (Ia7155)
  • 이전에 실험용이었던 속성 InProgressStrokesView.textureBitmapStore가 이제 비공개입니다. 이 속성에 대한 공개 액세스 권한이 아직 있습니다. (I1d706)

버그 수정

  • 입자가 많은 맞춤 브러시의 성능이 개선되었습니다.

버전 1.0.0-alpha04

2025년 4월 9일

androidx.ink:ink-*:1.0.0-alpha04이 출시되었습니다. 버전 1.0.0-alpha04에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 맞춤 BrushFamily 객체를 위한 새로운 실험용 API를 도입하여 연필, 레이저 포인터와 같은 새로운 브러시를 지원합니다. API를 사용하면 이 프로토로 정의된 브러시를 로드할 수 있습니다. (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 변경사항

  • 다양한 버그 수정 (I05dd8)

외부 기여

  • BuildCompat.isAtLeastV가 지원 중단되었습니다. 호출자는 SDK_INT를 35와 직접 비교해야 합니다. (I294d1)

버전 1.0.0-alpha01

2024년 10월 2일

androidx.ink:ink-*:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에는 이러한 커밋이 포함되어 있습니다.

새로운 기능

  • 애플리케이션에서 작성된 아름다운 잉크 획을 쉽게 생성, 렌더링, 조작할 수 있는 모듈식 구성 가능한 라이브러리입니다.

API 변경사항

개발자가 풍부한 잉크 환경을 빌드할 수 있도록 지원하는 새로운 모듈:

  • 작성: 입력이 수신될 때 실시간으로 획을 고성능, 짧은 지연 시간으로 렌더링하려면 InProgressStrokesView를 사용합니다.
  • 렌더링: CanvasStrokeRendererViewStrokeRenderer를 사용하여 앱의 사용자 인터페이스의 일부로 완성된 잉크 스트로크를 그립니다.
  • 스트로크: 잉크 기능에 사용되는 핵심 데이터 유형입니다.
  • 브러시: 사용자 입력에 따라 획이 표시되고 작동하는 방식을 구성할 수 있는 사양입니다.
  • 기하 도형: 선택 및 지우개와 같은 도구를 지원하는 교차 및 범위와 같은 기하 도형 작업