From 936d66a81e932511532fe3cd30626590bc76d263 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sun, 22 Oct 2023 23:13:26 +0800 Subject: [PATCH] feat: add errors app's target and min sdk record --- .../bean/AppErrorsInfoBean.kt | 12 ++++++++ .../errors/AppErrorsDetailActivity.kt | 2 ++ .../utils/factory/FunctionFactory.kt | 14 +++++++++ .../res/layout/activity_app_errors_detail.xml | 30 +++++++++++++++++++ module-app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 60 insertions(+) diff --git a/module-app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt b/module-app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt index 43e240d..058146c 100644 --- a/module-app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt +++ b/module-app/src/main/java/com/fankes/apperrorstracking/bean/AppErrorsInfoBean.kt @@ -27,6 +27,8 @@ import android.os.Build import com.fankes.apperrorstracking.const.ModuleVersion import com.fankes.apperrorstracking.locale.locale import com.fankes.apperrorstracking.utils.factory.appCpuAbiOf +import com.fankes.apperrorstracking.utils.factory.appMinSdkOf +import com.fankes.apperrorstracking.utils.factory.appTargetSdkOf import com.fankes.apperrorstracking.utils.factory.appVersionCodeOf import com.fankes.apperrorstracking.utils.factory.appVersionNameOf import com.fankes.apperrorstracking.utils.factory.difference @@ -45,6 +47,8 @@ import java.util.Locale * @param packageName 包名 * @param versionName 版本名称 * @param versionCode 版本号 + * @param targetSdk 目标 SDK 版本 + * @param minSdk 最低 SDK 版本 * @param isNativeCrash 是否为原生层异常 * @param exceptionClassName 异常类名 * @param exceptionMessage 异常信息 @@ -68,6 +72,10 @@ data class AppErrorsInfoBean( var versionName: String = "", @SerializedName("versionCode") var versionCode: Long = -1L, + @SerializedName("targetSdk") + var targetSdk: Int = -1, + @SerializedName("minSdk") + var minSdk: Int = -1, @SerializedName("isNativeCrash") var isNativeCrash: Boolean = false, @SerializedName("exceptionClassName") @@ -108,6 +116,8 @@ data class AppErrorsInfoBean( packageName = packageName ?: "unknown", versionName = packageName?.let { context.appVersionNameOf(it).ifBlank { "unknown" } } ?: "", versionCode = packageName?.let { context.appVersionCodeOf(it) } ?: -1L, + targetSdk = packageName?.let { context.appTargetSdkOf(it) } ?: -1, + minSdk = packageName?.let { context.appMinSdkOf(it) } ?: -1, isNativeCrash = isNativeCrash, exceptionClassName = crashInfo?.exceptionClassName ?: "unknown", exceptionMessage = if (isNativeCrash) crashInfo?.stackTrace.let { @@ -212,6 +222,8 @@ data class AppErrorsInfoBean( [Package Name]: $packageName [Version Name]: ${versionName.ifBlank { "unknown" }} [Version Code]: ${versionCode.takeIf { it != -1L } ?: "unknown"} + [Target SDK]: ${targetSdk.takeIf { it != -1 } ?: "unknown"} + [Min SDK]: ${minSdk.takeIf { it != -1 } ?: "unknown"} [Error Type]: ${if (isNativeCrash) "Native" else "JVM"} [Crash Time]: $utcTime [Stack Trace]: diff --git a/module-app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt b/module-app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt index 7dcddd8..497059e 100644 --- a/module-app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt +++ b/module-app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt @@ -144,6 +144,8 @@ class AppErrorsDetailActivity : BaseActivity() { binding.appUserIdText.isVisible = appErrorsInfo.userId > 0 binding.appUserIdText.text = locale.userId(appErrorsInfo.userId) binding.appCpuAbiText.text = appErrorsInfo.cpuAbi.ifBlank { locale.noCpuAbi } + binding.appTargetSdkText.text = locale.appTargetSdk(appErrorsInfo.targetSdk) + binding.appMinSdkText.text = locale.appMinSdk(appErrorsInfo.minSdk) binding.jvmErrorPanel.isGone = appErrorsInfo.isNativeCrash binding.errorTypeIcon.setImageResource(if (appErrorsInfo.isNativeCrash) R.drawable.ic_cpp else R.drawable.ic_java) binding.errorInfoText.text = appErrorsInfo.exceptionMessage diff --git a/module-app/src/main/java/com/fankes/apperrorstracking/utils/factory/FunctionFactory.kt b/module-app/src/main/java/com/fankes/apperrorstracking/utils/factory/FunctionFactory.kt index d514944..40d7c89 100644 --- a/module-app/src/main/java/com/fankes/apperrorstracking/utils/factory/FunctionFactory.kt +++ b/module-app/src/main/java/com/fankes/apperrorstracking/utils/factory/FunctionFactory.kt @@ -180,6 +180,20 @@ fun Context.appVersionNameOf(packageName: String = getPackageName()) = getPackag */ fun Context.appVersionCodeOf(packageName: String = getPackageName()) = getPackageInfoCompat(packageName)?.versionCodeCompat ?: -1L +/** + * 得到 APP 目标 SDK 版本 + * @param packageName APP 包名 - 默认为当前 APP + * @return [Int] 无法获取时返回 -1 + */ +fun Context.appTargetSdkOf(packageName: String = getPackageName()) = getPackageInfoCompat(packageName)?.applicationInfo?.targetSdkVersion ?: -1 + +/** + * 得到 APP 最低 SDK 版本 + * @param packageName APP 包名 - 默认为当前 APP + * @return [Int] 无法获取时返回 -1 + */ +fun Context.appMinSdkOf(packageName: String = getPackageName()) = getPackageInfoCompat(packageName)?.applicationInfo?.minSdkVersion ?: -1 + /** * 获取 APP CPU ABI 名称 * @param packageName APP 包名 - 默认为当前 APP diff --git a/module-app/src/main/res/layout/activity_app_errors_detail.xml b/module-app/src/main/res/layout/activity_app_errors_detail.xml index c5ce888..184d544 100644 --- a/module-app/src/main/res/layout/activity_app_errors_detail.xml +++ b/module-app/src/main/res/layout/activity_app_errors_detail.xml @@ -197,6 +197,36 @@ android:textColor="@color/white" android:textSize="9sp" /> + + + + %1$s records found CI Auto Build Instruction You are using a CI automated build with Commit ID %1$s.\n\nIt is automatically triggered and built after the code is committed, automatically compiled and released, and has not been tested for stability, use it at your own risk. + Target %1$s + Min %1$s \ No newline at end of file