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