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

gradle-build-system

Add a Gradle dependency or module, or triage a build failure. Use when editing gradle.properties or a build.gradle.kts. Not for plugin internals (convention-plugin-development) or version bumps (dependency-update).

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

설치 방법 보기

포함된 파일(1)

  • SKILL.md4.4 KB

SKILL.md(원문)

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

Gradle Build System

Overview

RIPDPI uses the Gradle version pinned by gradle/wrapper/gradle-wrapper.properties, convention plugins in build-logic/convention/, and the version catalog at gradle/libs.versions.toml. Read those source files before reporting versions; all module build configuration flows through convention plugins.

Convention Plugins

PluginPurpose
ripdpi.android.applicationApp module: compileSdk, minSdk, targetSdk, JDK 17
ripdpi.android.libraryLibrary modules: compileSdk, minSdk, JDK 17
ripdpi.android.composeCompose compiler configuration
ripdpi.android.nativeNDK version, ABI filters, legacy packaging
ripdpi.android.qualityShared detekt + ktlint + Android lint verification wiring
ripdpi.android.coverageShared JaCoCo coverage wiring
ripdpi.android.protobufProtobuf code generation setup
ripdpi.android.testcom.android.test modules (:baselineprofile): wires the shared Gradle Managed Device registry

This table is a working subset for everyday lookups, not the full inventory. Plugin sources: build-logic/convention/src/main/kotlin/ripdpi.android.*.gradle.kts -- for the complete plugin list, helper classes, and how to add a new plugin, read the convention-plugin-development skill.

Adding a Dependency

  1. Add version to [versions] in gradle/libs.versions.toml
  2. Add library to [libraries] with version.ref
  3. Use in module: implementation(libs.your.library)
# gradle/libs.versions.toml
[versions]
your-lib = "1.0.0"

[libraries]
your-library = { module = "com.example:library", version.ref = "your-lib" }

Never hardcode versions in build.gradle.kts files.

Adding a New Module

  1. Create module directory under appropriate parent (core/, feature/, etc.)
  2. Create build.gradle.kts applying convention plugin:
    plugins {
        id("ripdpi.android.library")
    }
    android { namespace = "com.poyka.ripdpi.your.module" }
    
  3. Add include(":your:module") to settings.gradle.kts
  4. Add Compose plugin if needed: id("ripdpi.android.compose")

Properties (Single Source of Truth)

All in gradle.properties:

PropertyMeaning
ripdpi.compileSdkAndroid compile SDK; read the live value before selecting SDK packages or APIs
ripdpi.minSdkMinimum supported Android API
ripdpi.targetSdkRuntime-behavior target; changes require separate compatibility testing
ripdpi.nativeNdkVersionPinned Android NDK version
ripdpi.nativeAbisFull CI/release ABI set
ripdpi.localNativeAbisDefaultLocal ABI policy; host derives the ABI from the workstation architecture

Gotchas

  • build-logic is an included build (includeBuild("build-logic") in settings). Changes to convention plugins require re-sync.
  • Static analysis: Run ./gradlew staticAnalysis -- it aggregates detekt, ktlint, and Android lint for the quality-enabled Android modules.
  • Native build order: :core:engine:buildRustNativeLibs runs before preBuild. If native build fails, check NDK installation path, Rust target availability, and the ripdpi.android.rust-native convention plugin under build-logic/convention/.
  • Local ABI fast path: local non-release builds follow ripdpi.localNativeAbisDefault; when it is host, Apple Silicon resolves to arm64-v8a and Intel hosts resolve to x86_64. Use -Pripdpi.localNativeAbis=x86_64 for emulator-focused iteration.

Common Mistakes

MistakeFix
Adding plugin directly to moduleUse convention plugin from build-logic/
Hardcoding version in build.gradle.ktsAdd to version catalog libs.versions.toml
Changing SDK versions in moduleChange in gradle.properties, convention plugins read it
Missing namespace in new library moduleRequired: android { namespace = "com.poyka.ripdpi..." }

See Also

  • convention-plugin-development skill -- full plugin inventory, plugin internals, and how to author a new convention plugin.
  • dependency-update skill -- version-catalog update workflows and cross-ecosystem (Gradle + Cargo) coordination.

리뷰

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

댓글

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

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

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. 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월 20일 업데이트

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월 20일 업데이트

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월 20일 업데이트

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월 20일 업데이트

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월 20일 업데이트

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월 20일 업데이트

po4yka의 스킬 모두 보기

이 스킬의 문제 신고