Skip to content
cccskills
FreePublished on 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).

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md4.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

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).

The English summary is being prepared. Showing the original description.

po4yka/RIPDPI81Updated Oct 21, 2026

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.

The English summary is being prepared. Showing the original description.

po4yka/RIPDPI81Updated Oct 21, 2026

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.

The English summary is being prepared. Showing the original description.

po4yka/RIPDPI81Updated Oct 21, 2026

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.

The English summary is being prepared. Showing the original description.

po4yka/RIPDPI81Updated Oct 21, 2026

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

The English summary is being prepared. Showing the original description.

po4yka/RIPDPI81Updated Oct 21, 2026

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).

The English summary is being prepared. Showing the original description.

po4yka/RIPDPI81Updated Oct 21, 2026

See all skills by po4yka

Report a problem with this skill