本文へ移動
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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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/RIPDPI792026年10月13日 更新

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/RIPDPI792026年10月13日 更新

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/RIPDPI792026年10月13日 更新

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/RIPDPI792026年10月13日 更新

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/RIPDPI792026年10月13日 更新

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/RIPDPI792026年10月13日 更新

po4yka のスキルをすべて見る

このスキルの問題を報告する