mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Include debug info in dumped crash logs
This commit is contained in:
		| @@ -1,7 +1,6 @@ | ||||
| package eu.kanade.tachiyomi.ui.more | ||||
|  | ||||
| import android.app.Dialog | ||||
| import android.os.Build | ||||
| import android.os.Bundle | ||||
| import androidx.core.os.bundleOf | ||||
| import androidx.preference.PreferenceScreen | ||||
| @@ -15,6 +14,7 @@ import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker | ||||
| import eu.kanade.tachiyomi.ui.base.controller.DialogController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.openInBrowser | ||||
| import eu.kanade.tachiyomi.ui.setting.SettingsController | ||||
| import eu.kanade.tachiyomi.util.CrashLogUtil | ||||
| import eu.kanade.tachiyomi.util.lang.launchNow | ||||
| import eu.kanade.tachiyomi.util.lang.toDateTimestampString | ||||
| import eu.kanade.tachiyomi.util.preference.onClick | ||||
| @@ -201,19 +201,10 @@ class AboutController : SettingsController() { | ||||
|     } | ||||
|  | ||||
|     private fun copyDebugInfo() { | ||||
|         val deviceInfo = | ||||
|             """ | ||||
|             App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}, ${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE}) | ||||
|             Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT}) | ||||
|             Android build ID: ${Build.DISPLAY} | ||||
|             Device brand: ${Build.BRAND} | ||||
|             Device manufacturer: ${Build.MANUFACTURER} | ||||
|             Device name: ${Build.DEVICE} | ||||
|             Device model: ${Build.MODEL} | ||||
|             Device product name: ${Build.PRODUCT} | ||||
|             """.trimIndent() | ||||
|  | ||||
|         activity?.copyToClipboard("Debug information", deviceInfo) | ||||
|         activity?.let { | ||||
|             val deviceInfo = CrashLogUtil(it).getDebugInfo() | ||||
|             activity?.copyToClipboard("Debug information", deviceInfo) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun getFormattedBuildTime(): String { | ||||
|   | ||||
| @@ -2,15 +2,18 @@ package eu.kanade.tachiyomi.util | ||||
|  | ||||
| import android.content.Context | ||||
| import android.net.Uri | ||||
| import android.os.Build | ||||
| import eu.kanade.tachiyomi.BuildConfig | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.notification.NotificationReceiver | ||||
| import eu.kanade.tachiyomi.data.notification.Notifications | ||||
| import eu.kanade.tachiyomi.util.lang.launchIO | ||||
| import eu.kanade.tachiyomi.util.lang.withUIContext | ||||
| import eu.kanade.tachiyomi.util.storage.getUriCompat | ||||
| import eu.kanade.tachiyomi.util.system.createFileInCacheDir | ||||
| import eu.kanade.tachiyomi.util.system.notificationBuilder | ||||
| import eu.kanade.tachiyomi.util.system.notificationManager | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import java.io.IOException | ||||
|  | ||||
| class CrashLogUtil(private val context: Context) { | ||||
|  | ||||
| @@ -19,16 +22,32 @@ class CrashLogUtil(private val context: Context) { | ||||
|     } | ||||
|  | ||||
|     fun dumpLogs() { | ||||
|         try { | ||||
|             val file = context.createFileInCacheDir("tachiyomi_crash_logs.txt") | ||||
|             Runtime.getRuntime().exec("logcat *:E -d -f ${file.absolutePath}") | ||||
|         launchIO { | ||||
|             try { | ||||
|                 val file = context.createFileInCacheDir("tachiyomi_crash_logs.txt") | ||||
|                 Runtime.getRuntime().exec("logcat *:E -d -f ${file.absolutePath}").waitFor() | ||||
|                 file.appendText(getDebugInfo()) | ||||
|  | ||||
|             showNotification(file.getUriCompat(context)) | ||||
|         } catch (e: IOException) { | ||||
|             context.toast("Failed to get logs") | ||||
|                 showNotification(file.getUriCompat(context)) | ||||
|             } catch (e: Throwable) { | ||||
|                 withUIContext { context.toast("Failed to get logs") } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun getDebugInfo(): String { | ||||
|         return """ | ||||
|             App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}, ${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE}) | ||||
|             Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT}) | ||||
|             Android build ID: ${Build.DISPLAY} | ||||
|             Device brand: ${Build.BRAND} | ||||
|             Device manufacturer: ${Build.MANUFACTURER} | ||||
|             Device name: ${Build.DEVICE} | ||||
|             Device model: ${Build.MODEL} | ||||
|             Device product name: ${Build.PRODUCT} | ||||
|         """.trimIndent() | ||||
|     } | ||||
|  | ||||
|     private fun showNotification(uri: Uri) { | ||||
|         context.notificationManager.cancel(Notifications.ID_CRASH_LOGS) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user