본문으로 건너뛰기
cccskills
무료GitHub에 공개

dependency-update

Bump a Gradle or Rust dependency version. Use when editing libs.versions.toml, native/rust/Cargo.toml, or reviewing a Renovate PR. Not for adding a module or plugin (gradle-build-system, convention-plugin-development).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md5.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Dependency Update

Two dependency ecosystems (Gradle + Cargo) with Renovate automating PR creation.

Gradle Version Catalog

File: gradle/libs.versions.toml

Values below are illustrative placeholders only -- always read the live pins from gradle/libs.versions.toml before reporting or bumping a version; they change independently of this skill.

Structure:

[versions]
agp = "X.Y.Z"
kotlin-compose = "X.Y.Z"
compose-bom = "YYYY.MM.NN"

[libraries]
androidx-core = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }

[bundles]
lifecycle = ["lifecycle-runtime", "lifecycle-viewmodel"]

Rule: Always update the version in the [versions] section. Never inline a version in [libraries] or [plugins].

Key Version Groups

GroupVersions to Update Together
Kotlin / Compose pluginkotlin-compose and its compatible KSP entry
Composecompose-bom (single BOM controls Compose libraries)
AndroidXIndividually, but Renovate groups them
AGPagp (may require Gradle wrapper update)
Testingjunit, robolectric, roborazzi independently

Rust Dependencies

File: native/rust/Cargo.toml (workspace root)

Dependencies declared in [workspace.dependencies] are inherited by crates via { workspace = true }:

[workspace.dependencies]
tokio = { version = "1.45", features = ["full"] }
serde = { version = "1", features = ["derive"] }

Update a specific crate:

cd native/rust
cargo update -p tokio

Update all:

cd native/rust
cargo update

Renovate Configuration

File: renovate.json

Grouping rules:

  • AndroidX packages grouped into a single PR
  • Kotlin + Compose Compiler grouped together
  • Static analysis (detekt, ktlint) grouped together
  • All dependency PRs labeled dependencies
  • Git submodules enabled

Update Workflows

Single Gradle Dependency

# 1. Edit version in libs.versions.toml
# 2. Verify
./gradlew assembleDebug && ./gradlew testDebugUnitTest

AGP / Gradle Upgrade

# 1. Update agp version in libs.versions.toml
# 2. May need Gradle wrapper update:
./gradlew wrapper --gradle-version=X.Y.Z
# 3. Full verification:
./gradlew assembleDebug testDebugUnitTest staticAnalysis

Kotlin Version Update

Update all three together in libs.versions.toml:

  • kotlin (Kotlin compiler)
  • ksp (must match Kotlin major.minor)
  • kotlinComposeCompiler (Compose compiler plugin)
./gradlew assembleDebug testDebugUnitTest staticAnalysis

Rust Dependency Update

cd native/rust
cargo update -p <crate-name>
cargo test --locked
cargo clippy --locked --workspace --all-targets -- -D warnings
# Rebuild Android libs to verify cross-compilation:
cd ../.. && ./gradlew :core:engine:buildRustNativeLibs

NDK Version Update

NDK changes affect both ecosystems:

  1. Update ripdpi.nativeNdkVersion in gradle.properties
  2. Verify Rust cross-compilation targets still work:
    ./gradlew :core:engine:buildRustNativeLibs
    
  3. Full test suite:
    ./gradlew assembleDebug testDebugUnitTest
    cd native/rust && cargo test --locked
    

Rust Toolchain Update

  1. Update channel in native/rust/rust-toolchain.toml
  2. Verify CI workflow uses the same version (reads from rust-toolchain.toml)
  3. Run: cd native/rust && cargo test --locked && cargo clippy --locked --workspace

Cross-Ecosystem Dependencies

ChangeAffects
NDK versiongradle.properties + Rust cross-compilation targets
Rust toolchainrust-toolchain.toml + CI workflow setup
JNI API changesKotlin bindings in core/engine + Rust crates ripdpi-android, ripdpi-tunnel-android

Verification Checklist

After any update, run in order:

./gradlew assembleDebug                          # Kotlin compilation
./gradlew testDebugUnitTest                      # Unit tests
./gradlew staticAnalysis                         # detekt + ktlint + lint
cd native/rust && cargo test --locked                     # Rust tests
cd ../.. && ./gradlew :core:engine:buildRustNativeLibs  # Cross-compilation

Common Mistakes

MistakeFix
Inline version in [libraries] instead of [versions]Always use version.ref pointing to [versions] entry
Updating Kotlin without KSPKSP version must match Kotlin major.minor. Update together.
Forgetting Cargo.lockCargo.lock is committed for reproducible builds. Run cargo update and commit the lock file.
NDK update without rebuilding native libsNDK changes require ./gradlew :core:engine:buildRustNativeLibs to verify.
Updating Compose libs individuallyUse composeBom version -- single BOM controls all Compose library versions.
Rust toolchain update without CI checkCI reads rust-toolchain.toml -- verify the version exists and targets are available.

See Also

  • gradle-build-system skill -- convention plugins and dependency management patterns.
  • ci-workflow-authoring skill -- CI environment setup that depends on these versions.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

RIPDPI's own Compose conventions: ViewModel pattern, Route/Screen split, DataStore->StateFlow, RipDpiThemeTokens. Use for how this app does Compose, not generic Compose API questions (see compose).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

po4yka/RIPDPI812026년 10월 19일 업데이트

ADB-based RIPDPI device/emulator debugging: build/install/launch, logcat filtering, fixture port-forwarding, instrumented tests, crash/ANR triage. Use when debugging on a real device or emulator.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

po4yka/RIPDPI812026년 10월 19일 업데이트

RIPDPI Appium launch-contract reference: start routes and permission/service/data presets. Use when a test launches to the wrong screen or a new automation route is added. General flakiness: appium-test-debug.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

po4yka/RIPDPI812026년 10월 19일 업데이트

RIPDPI Appium test authoring: page objects, resource-id locators, assertions, wait tiers. Use when writing a new Appium test or page object, or adding coverage for a new screen.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

po4yka/RIPDPI812026년 10월 19일 업데이트

RIPDPI Appium failure triage: flaky tests, locator/session/wait issues, screenshot and element-tree debugging. Use when an Appium test fails or is flaky.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

po4yka/RIPDPI812026년 10월 19일 업데이트

Add or modify a GitHub Actions job. Use when editing a file under .github/workflows/. Not for running a workflow locally (local-ci-act) or release signing (release-signing).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

po4yka/RIPDPI812026년 10월 19일 업데이트

po4yka의 스킬 모두 보기

이 스킬의 문제 신고