بنقرة واحدة
gradle-build-system
Gradle dependencies, modules, convention plugins, and Android build failure triage.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Gradle dependencies, modules, convention plugins, and Android build failure triage.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | gradle-build-system |
| description | Gradle dependencies, modules, convention plugins, and Android build failure triage. |
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.
| Plugin | Purpose |
|---|---|
ripdpi.android.application | App module: compileSdk, minSdk, targetSdk, JDK 17 |
ripdpi.android.library | Library modules: compileSdk, minSdk, JDK 17 |
ripdpi.android.compose | Compose compiler configuration |
ripdpi.android.native | NDK version, ABI filters, legacy packaging |
ripdpi.android.quality | Shared detekt + ktlint + Android lint verification wiring |
ripdpi.android.coverage | Shared JaCoCo coverage wiring |
ripdpi.android.protobuf | Protobuf code generation setup |
Plugin sources: build-logic/convention/src/main/kotlin/ripdpi.android.*.gradle.kts
[versions] in gradle/libs.versions.toml[libraries] with version.refimplementation(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.
core/, feature/, etc.)build.gradle.kts applying convention plugin:
plugins {
id("ripdpi.android.library")
}
android { namespace = "com.poyka.ripdpi.your.module" }
include(":your:module") to settings.gradle.ktsid("ripdpi.android.compose")All in gradle.properties:
| Property | Meaning |
|---|---|
ripdpi.compileSdk | Android compile SDK; read the live value before selecting SDK packages or APIs |
ripdpi.minSdk | Minimum supported Android API |
ripdpi.targetSdk | Runtime-behavior target; changes require separate compatibility testing |
ripdpi.nativeNdkVersion | Pinned Android NDK version |
ripdpi.nativeAbis | Full CI/release ABI set |
ripdpi.localNativeAbisDefault | Local ABI policy; host derives the ABI from the workstation architecture |
includeBuild("build-logic") in settings). Changes to convention plugins require re-sync../gradlew staticAnalysis -- it aggregates detekt, ktlint, and Android lint for the quality-enabled Android modules.: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/.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.| Mistake | Fix |
|---|---|
| Adding plugin directly to module | Use convention plugin from build-logic/ |
| Hardcoding version in build.gradle.kts | Add to version catalog libs.versions.toml |
| Changing SDK versions in module | Change in gradle.properties, convention plugins read it |
| Missing namespace in new library module | Required: android { namespace = "com.poyka.ripdpi..." } |
Use this skill to generate well-branded interfaces and assets for RIPDPI (an Android-native, Compose-first VPN and DPI-bypass app), either for production or throwaway prototypes/mocks/etc. Contains essential design guidelines, colors, type, fonts, brand-ship icons, and an interactive UI kit of every public composable from the live ui/components tree.
Use when managing the Rust workspace, adding/removing crates, editing workspace dependencies, running cargo nextest/audit/deny, configuring Cargo profiles for Android cross-compilation, debugging Cargo.lock churn, migrating crate edition, or wiring Gradle to cargo via the ripdpi.android.rust-native plugin.
Use when modifying the diagnostics scan pipeline, ScanRequest/ScanReport types, ProbeTask families, ripdpi-monitor-engine / ripdpi-diagnostics-* crates, strategy-probe candidates, the diagnostics catalog (packs/profiles), wire-schema contracts between Rust and Kotlin, DIAGNOSTICS_ENGINE_SCHEMA_VERSION, golden contract tests, or adding a new probe type / profile. Triggers on diagnostics scans, strategy probes, automatic audit, dpi-detector profiles, or anything in core/diagnostics or native/rust/crates/ripdpi-monitor-*.
Android-specific Rust build, verification, and packaging — per-target 16 KiB page alignment, size-optimized release profile, ELF symbol allowlist, .so size budgets, NDK 29 specifics. Use when modifying .cargo/config.toml for Android targets, the workspace [profile.release] / [profile.android-jni] block, or when verifying a built .so before release.
Telemetry and observability discipline for the RIPDPI Android Rust stack — control-plane vs data-plane logging, bounded flume event queues, atomic counters, snapshot polling, readiness callbacks, and deterministic JSON contracts. Use when authoring or modifying telemetry emission code, the bounded event ring, the Kotlin-side telemetry consumer, or any per-packet logging.
Custom detekt rules, DI/privacy/suppression guardrails, detekt.yml configuration, and false-positive triage.