From 9f0b836c5775b1fc98d8f7aad9d120aa509e3690 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 15 Mar 2024 19:07:09 +0800 Subject: [PATCH] =?UTF-8?q?[6.3.0][=E8=B0=83=E8=AF=95=E9=9D=A2=E6=9D=BF]?= =?UTF-8?q?=20=E5=9C=A8=E8=B0=83=E8=AF=95=E9=9D=A2=E6=9D=BF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=B8=BB=E5=8A=A8=E4=B8=8A=E4=BC=A0Vlog=E7=9A=84UI?= =?UTF-8?q?=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../hmi/ui/setting/DebugSettingView.kt | 100 +++++++++++++++++- .../main/res/layout/view_debug_setting.xml | 48 +++++++++ 3 files changed, 148 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 819a162026..1a7cd2904b 100644 --- a/build.gradle +++ b/build.gradle @@ -38,7 +38,7 @@ buildscript { classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.15.0" classpath 'com.mogo.cloud:matrix:1.0.2' classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.4.0.2513' - classpath 'com.mogo.eagle.core.handler.proxy:plugin:10.0.0' + classpath 'com.mogo.eagle.core.handler.proxy:plugin:10.0.10' classpath 'com.gradle:gradle-enterprise-gradle-plugin:3.15.1' // classpath 'com.bytedance.btrace:rhea-gradle-plugin:2.0.0' } 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 28b3b3734f..9556510904 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 @@ -7,6 +7,7 @@ import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.graphics.Color +import android.graphics.drawable.ColorDrawable import android.os.Build import android.os.Process import android.text.Html @@ -14,7 +15,11 @@ import android.util.AttributeSet import android.util.Log import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.TextView import androidx.annotation.RequiresApi +import androidx.appcompat.widget.ListPopupWindow import androidx.appcompat.widget.PopupMenu import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat @@ -22,6 +27,7 @@ import androidx.core.view.MenuCompat import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import chassis.Chassis +import com.alibaba.android.arouter.launcher.ARouter import com.mogo.cloud.network.cronet.NetworkQualityListener import com.mogo.cloud.network.cronet.QuicConfig import com.mogo.cloud.passport.MoGoAiCloudClient @@ -33,6 +39,7 @@ import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.data.config.JunkConfig import com.mogo.eagle.core.data.constants.MoGoConfig import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BAG_RECORD @@ -91,6 +98,8 @@ import com.mogo.eagle.core.utilcode.util.* import com.mogo.map.MogoData.Companion.mogoMapData import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode.* +import com.mogo.test.crashreport.CrashReportConstants +import com.mogo.test.crashreport.ITestCrashReportProvider import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.service.chain.ChainLog import kotlinx.android.synthetic.main.view_debug_setting.view.* @@ -99,6 +108,7 @@ import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import java.text.SimpleDateFormat import java.util.* +import java.util.concurrent.TimeUnit import kotlin.collections.component1 import kotlin.collections.component2 import kotlin.collections.component3 @@ -1564,7 +1574,7 @@ internal class DebugSettingView @JvmOverloads constructor( } } - //导出全量日志 + //上传全量日志 exportAllLogs?.onClick { v -> v.visibility = View.INVISIBLE logLoadingView?.visibility = View.VISIBLE @@ -1588,6 +1598,47 @@ internal class DebugSettingView @JvmOverloads constructor( } } + if (JunkConfig.isSupportJunkDetect) { + // 上传APM日志 + upload_apm_log_group?.visibility = View.VISIBLE + upload_apm_log?.onClick { v -> + ListPopupWindow(v.context).also { p -> + val items = ApmVLogUploadDuration.values() + p.setAdapter(ApmVLogUploadAdapter(v.context, items)) + p.anchorView = v + p.isModal = true + p.setBackgroundDrawable(ColorDrawable(Color.WHITE)) + p.setOnItemClickListener { _, _, position, _ -> + val provider = (ARouter.getInstance().build(CrashReportConstants.PATH).navigation() as? ITestCrashReportProvider) ?: return@setOnItemClickListener + val item = items[position] + v.visibility = View.INVISIBLE + upload_apm_log_loading?.visibility = View.VISIBLE + p.dismiss() + v.scope.launch(Dispatchers.IO) { + val endTime = System.currentTimeMillis() + val startTime = when(item) { + ApmVLogUploadDuration.IN_15M -> endTime - TimeUnit.MINUTES.toMillis(15) + ApmVLogUploadDuration.IN_45M -> endTime - TimeUnit.MINUTES.toMillis(45) + ApmVLogUploadDuration.IN_1H -> endTime - TimeUnit.HOURS.toMillis(1) + ApmVLogUploadDuration.IN_2H -> endTime - TimeUnit.HOURS.toMillis(2) + ApmVLogUploadDuration.IN_3H -> endTime - TimeUnit.HOURS.toMillis(3) + ApmVLogUploadDuration.IN_6H -> endTime - TimeUnit.HOURS.toMillis(6) + ApmVLogUploadDuration.ALL -> 0 + } + provider.uploadVlog(startTime, endTime) + withContext(Dispatchers.Main) { + ToastUtils.showShort("上传成功") + upload_apm_log_loading?.visibility = View.INVISIBLE + upload_apm_log?.visibility = View.VISIBLE + } + } + } + }.show() + } + } else { + upload_apm_log_group?.visibility = View.GONE + } + /** * 展示、关闭日志过滤面板 */ @@ -1680,6 +1731,53 @@ internal class DebugSettingView @JvmOverloads constructor( } } + private enum class ApmVLogUploadDuration(val text: String) { + IN_15M("15分钟内"), + IN_45M("45分钟内"), + IN_1H("1小时内"), + IN_2H("2小时内"), + IN_3H("3小时内"), + IN_6H("6小时内"), + ALL("上传所有") + } + + private class ApmVLogUploadAdapter(private val ctx: Context, private val items: Array): BaseAdapter() { + override fun getCount(): Int { + return items.size + } + + override fun getItem(position: Int): Any { + return items[position] + } + + override fun getItemId(position: Int): Long { + return items[position].ordinal.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + var result = convertView + val duration = items[position] + if (result == null) { + val temp = View.inflate(ctx, android.R.layout.simple_list_item_1, null) + temp.tag = Holder(temp.findViewById(android.R.id.text1)) + result = temp + } + val holder = result?.tag as? Holder + if (holder != null) { + holder.text?.setTextColor(Color.BLACK) + holder.text?.text = duration.text + } else { + val text = result?.findViewById(android.R.id.text1) + text?.setTextColor(Color.BLACK) + text?.text = duration.text + result?.tag = Holder(text) + } + return result!! + } + + private inner class Holder(val text: TextView? = null) + } + private fun refreshTraceInfo() { val traceInfoMap = CallerDevaToolsManager.getTraceInfo() val autopilot = traceInfoMap[ChainConstant.CHAIN_TYPE_SOCKET_AUTOPILOT] 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 29fe1d60a7..60a2fe799e 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 @@ -2341,6 +2341,54 @@ android:text="上传全量日志" android:gravity="center" android:layout_marginTop="10dip" + android:layout_marginBottom="10dipis" /> + + + + + + + + + + + +