OpisDescription
Moduł Diagnostics sprawdza zdrowie wszystkich komponentów biblioteki ADict.
Wykrywa problemy z inicjalizacją, konfiguracją i connectivity, generującDetects initialization, configuration, and connectivity issues, generating
szczegółowe raporty z sugestiami naprawy.The Diagnostics module checks the health of all ADict library components. Detects initialization, configuration, and connectivity issues, generating detailed reports with fix suggestions.
Pełna diagnostykaFull Diagnostics
lifecycleScope.launch {
val report = ADict.Diagnostics.runFullCheck()
// Podsumowanie tekstowe
println(report.toSummaryString())
// Szczegóły
println("Overall: ${report.overallHealth}")
println("Modules: ${report.healthyModulesCount}/${report.totalModulesCount}")
if (report.hasErrors) {
report.errors.forEach { error ->
Log.e("Diagnostics", "[${error.module}] ${error.message}")
Log.e("Diagnostics", "Suggestion: ${error.suggestion}")
}
}
if (report.hasWarnings) {
report.warnings.forEach { warning ->
Log.w("Diagnostics", "[${warning.module}] ${warning.message}")
}
}
}
Sprawdzanie konkretnego modułuChecking a Specific Module
val adsHealth = ADict.Diagnostics.checkModule("ads")
if (!adsHealth.isHealthy) {
showAdErrorUI()
Log.e("Ads", "Problem: ${adsHealth.message}")
Log.e("Ads", "Level: ${adsHealth.level}")
}
// Dostępne moduły do sprawdzenia:
// adict, config, gdpr, inapp, ads, analytics, eventbus,
// network, securestorage, notifications, permissions,
// abtesting, ratelimit, appstate
Poziomy zdrowiaHealth Levels
| PoziomLevel |
OpisDescription |
HEALTHY |
Wszystko OKEverything OK |
WARNING |
Działa, ale z problemamiWorks but with issues |
ERROR |
Nie działa poprawnieNot working properly |
CRITICAL |
Wymaga natychmiastowej uwagiRequires immediate attention |
UNKNOWN |
Nie można sprawdzićCannot check |
Automatyczne sprawdzanieAutomatic Checks
// Uruchom sprawdzanie co 5 minut
ADict.Diagnostics.enableAutoCheck(intervalMs = 5 * 60 * 1000L) { report ->
if (report.hasErrors) {
// Wyślij do analytics
analytics.log("diagnostic_errors", mapOf(
"count" to report.errors.size,
"modules" to report.errors.map { it.module }.distinct()
))
// Powiadom zespół deweloperski
crashlytics.log("Diagnostic errors: ${report.errors.size}")
}
}
// Wyłącz automatyczne sprawdzanie
ADict.Diagnostics.disableAutoCheck()
Własne checkiCustom Checks
// Dodaj własny check
ADict.Diagnostics.addCustomCheck("my_backend") {
val isConnected = try {
myApi.healthCheck()
} catch (e: Exception) {
false
}
Diagnostics.ModuleHealth(
moduleName = "MyBackend",
isInitialized = true,
level = if (isConnected)
Diagnostics.HealthLevel.HEALTHY
else
Diagnostics.HealthLevel.ERROR,
message = if (isConnected)
"Backend reachable"
else
"Cannot reach backend",
details = mapOf(
"endpoint" to "api.example.com",
"lastCheck" to System.currentTimeMillis()
)
)
}
// Usuń własny check
ADict.Diagnostics.removeCustomCheck("my_backend")
Quick checks
// Szybkie sprawdzenie czy wszystko OK
if (ADict.Diagnostics.isHealthy()) {
proceedNormally()
} else {
showDegradedModeUI()
}
// Sprawdź czy moduł jest zainicjalizowany
if (ADict.Diagnostics.isModuleInitialized("analytics")) {
trackEvent()
}
HistoriaHistory raportów
// Pobierz ostatnie raporty
val history = ADict.Diagnostics.getReportHistory(limit = 10)
history.forEach { report ->
println("${report.timestamp}: ${report.overallHealth}")
println("Errors: ${report.errors.size}, Warnings: ${report.warnings.size}")
}
// Wyczyść historię
ADict.Diagnostics.clearHistory()
// Callback na każdy raport
ADict.Diagnostics.onReport { report ->
saveToLocalLog(report)
}
System Info
val report = ADict.Diagnostics.runFullCheck()
val info = report.systemInfo
println("SDK: ${info.sdkVersion}")
println("Device: ${info.deviceModel}")
println("Debug: ${info.isDebugBuild}")
println("App Version: ${info.appVersion}")
println("Library: ${info.libraryVersion}")
println("Network: ${info.isNetworkAvailable}")
println("Memory: ${info.availableMemoryMb}MB")
Kategorie błędówError Categories
| KategoriaCategory |
OpisDescription |
INITIALIZATION |
Błąd inicjalizacji modułuModule initialization error |
CONFIGURATION |
Błąd konfiguracjiConfiguration error |
CONNECTIVITY |
Problem z połączeniemConnection problem |
PERMISSION |
Brak uprawnieńMissing permissions |
DEPENDENCY |
Brakująca zależnośćMissing dependency |
RUNTIME |
Błąd w trakcie działaniaRuntime error |