راه‌اندازی Production و R8

R8 mapping نسخه minified را از محیط build به دیدبان برسانید.

بدون mapping، نام کلاس و متد در stack traceهای R8 شده مبهم است. Didban mapping را با application ID نهایی و versionCode همان build تطبیق می‌دهد.

مسیر R8 mapping

Release build → R8 mapping.txt → Didban Gradle plugin → Didban backend → readable crash frames

۱. plugin را resolve و اعمال کنید

در settings.gradle.kts، مخزن عمومی دیدبان را در pluginManagement اضافه کنید:

settings.gradle.ktskotlin
pluginManagement {
    repositories {
        maven(url = "https://repo.didban.cloud")
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

سپس در ماژول Android application (نه library) plugin را اعمال کنید:

app/build.gradle.ktskotlin
plugins {
    id("com.android.application")
    id("dev.didban.gradle") version "0.1.0"
}

۲. کلید Build را پیکربندی کنید

app/build.gradle.ktskotlin
didban {
    authToken.set(providers.gradleProperty("DIDBAN_BUILD_API_KEY"))
    failBuildOnUploadError.set(true)
}

در CI، DIDBAN_BUILD_API_KEY را از secrets به Gradle property بدهید. برای یک متغیر محیطی، providers.environmentVariable("DIDBAN_BUILD_API_KEY") نیز یک Provider سازگار است.

رفتار upload

  • فقط variantهای application با minification فعال eligible هستند. variantهای unminified task mapping ندارند.
  • AGP فایل OBFUSCATION_MAPPING_FILE (همان mapping.txt) را به task می‌دهد.
  • assemble<Variant> و bundle<Variant> upload task را finalizer می‌کنند. نمونه: assembleRelease یا bundleRelease.
  • می‌توانید retry دستی کنید: ./gradlew uploadDidbanReleaseMapping
  • autoUploadMapping به‌طور پیش‌فرض true است. autoUploadNativeSymbols به‌طور پیش‌فرض false است و برای native symbols opt-in است.
app/build.gradle.ktskotlin
didban {
    // Defaults shown explicitly only when you need to change them.
    autoUploadMapping.set(true)
    autoUploadNativeSymbols.set(false)
    // baseUrl defaults to https://api.didban.cloud
}

موفقیت mapping در خروجی Gradle با «Didban: uploaded R8 mapping for … versionCode=…» نمایش داده می‌شود.

مهم

بدون build key معتبر، task skip می‌شود و درخواست شبکه‌ای نمی‌زند—حتی اگر failBuildOnUploadError=true باشد. با کلید معتبر، خطاهای فایل، شبکه، احراز هویت یا پاسخ غیر 2xx به‌صورت warning ثبت می‌شوند؛ با failBuildOnUploadError=true build را fail می‌کنند.