From aa1e40a8cada72a72deb59a1af4b69d9a3dabb50 Mon Sep 17 00:00:00 2001 From: renwj Date: Tue, 4 Jul 2023 12:03:26 +0800 Subject: [PATCH] =?UTF-8?q?[3.3.0][=E6=97=A5=E5=BF=97]=20=E5=9C=A8?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E9=9D=A2=E6=9D=BF=E6=B7=BB=E5=8A=A0=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=85=A8=E9=87=8F=E6=97=A5=E5=BF=97=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 2 +- .../logcat/MoGoLogRecordProviderImpl.kt | 28 +++++++++++- .../hmi/ui/setting/DebugSettingView.kt | 35 +++++++++++++++ .../main/res/layout/view_debug_setting.xml | 44 +++++++++++++++++++ .../logcat/IMoGoLogRecordProvider.kt | 3 ++ .../call/devatools/CallerDevaToolsManager.kt | 3 ++ .../src/main/res/xml/provider_paths.xml | 1 + 7 files changed, 113 insertions(+), 3 deletions(-) diff --git a/config.gradle b/config.gradle index e988b6635d..f237a3ad74 100644 --- a/config.gradle +++ b/config.gradle @@ -219,7 +219,7 @@ ext { weak_network : "com.mogo.weak:network:1.0.0", mofang_runtime : "com.mogo.eagle.core.mofang:runtime:2.0.5", - log_runtime : "com.mogo.eagle.core.log.record:runtime:1.0.0" + log_runtime : "com.mogo.eagle.core.log.record:runtime:1.0.6" ] android = [ launcherApplicationId : "com.mogo.launcher", diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt index 81558aa2e6..509435a7ba 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt @@ -5,6 +5,7 @@ import android.os.Process import android.util.* import com.mogo.core.log.record.* import com.mogo.core.log.record.config.* +import com.mogo.core.log.record.config.crash.* import com.mogo.eagle.core.function.api.devatools.logcat.* import com.mogo.eagle.core.utilcode.util.* import com.zhjt.mogo_core_function_devatools.logcat.uploader.* @@ -20,12 +21,31 @@ internal class MoGoLogRecordProviderImpl: IMoGoLogRecordProvider { private val scope by lazy { CoroutineScope(Dispatchers.IO + SupervisorJob()) } override fun init(context: Context) { + val zipDir = File(context.getExternalFilesDir(null), "logcat/zip") LogcatManager.init(LogcatConfig.Builder().context(context) - .recordPeriod(MINUTES.toMillis(3)) - .maxSizeInLogDir((1 * 1024 * 1024 * 1024).toLong()) //1G的最大容量 + .recordPeriod(MINUTES.toMillis(1)) // 1分钟一个文件 + .maxSizeInLogDir((512 * 1024 * 1024).toLong()) // 512M最大容量 .recordDir(File(context.getExternalFilesDir(null), "logcat")) .pid(Process.myPid()) + .generateZipDir(zipDir.absolutePath) + .crashConfig(CrashConfig.Builder() + .enabled(true) + .crashDir(File(context.getExternalFilesDir(null), "logcat/crash")) + .javaCrash(true) + .anr(true) + .build()) .uploader(LogRecordUploader())) + scope.launch { + try { + if (zipDir.exists()) { + zipDir.listFiles()?.forEach { + it.delete() + } + } + } catch (t: Throwable) { + t.printStackTrace() + } + } } @@ -51,4 +71,8 @@ internal class MoGoLogRecordProviderImpl: IMoGoLogRecordProvider { Log.d(TAG, "上传日志:[startTime:$startTime, endTime: $endTime], 结果: $result") } } + + override fun export(): File? { + return LogcatManager.export() + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 9d8a58dba7..d6701babf6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -5,7 +5,9 @@ import android.app.Activity import android.content.ClipData import android.content.ClipboardManager import android.content.Context +import android.content.Intent import android.graphics.Color +import android.net.* import android.os.Build import android.os.Process import android.text.Html @@ -16,6 +18,7 @@ import androidx.annotation.RequiresApi import androidx.appcompat.widget.PopupMenu import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat +import androidx.core.content.FileProvider import androidx.core.view.* import androidx.lifecycle.lifecycleScope import chassis.Chassis @@ -1363,6 +1366,38 @@ internal class DebugSettingView @JvmOverloads constructor( } } + //导出全量日志 + exportAllLogs?.onClick { v -> + v.visibility = View.INVISIBLE + logLoadingView?.visibility = View.VISIBLE + v.scope.launch(Dispatchers.IO) { + val file = CallerDevaToolsManager.logcat()?.export() + if (file != null && file.exists()) { + withContext(Dispatchers.Main) { + var activity = AppStateManager.currentActivity() + while (activity == null) { + delay(2000) + activity = AppStateManager.currentActivity() + if (activity != null) { + break + } + } + activity?.startActivity(Intent.createChooser(Intent().also { + it.action = Intent.ACTION_SEND + it.type = "application/zip" + it.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(activity, "${activity.packageName}.fileProvider", file)) + }, "分享全量日志压缩包到")) + } + } else { + ToastUtils.showShort("全量日志压缩文件生成失败") + } + withContext(Dispatchers.Main) { + logLoadingView?.visibility = View.INVISIBLE + exportAllLogs?.visibility = View.VISIBLE + } + } + } + /** * 展示、关闭日志过滤面板 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 4d1d24f308..f5cefbfa4e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -2217,6 +2217,50 @@ + + + + + + + + + + + + + \ No newline at end of file