From d57554af2804d241dd07f682236ccced5e477ae9 Mon Sep 17 00:00:00 2001 From: cgspine Date: Wed, 23 Feb 2022 10:27:18 +0800 Subject: [PATCH] feat: 1. use xcrash for release test case; 2. use proguard-android-optimize.txt for Compose laggy issue. --- .../src/main/java/com/qmuiteam/plugin/Dep.kt | 2 +- qmuidemo/build.gradle.kts | 10 ++++- qmuidemo/proguard-rules.pro | 5 ++- .../com/qmuiteam/qmuidemo/QDApplication.kt | 42 +++++++++++++++++-- 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/plugin/src/main/java/com/qmuiteam/plugin/Dep.kt b/plugin/src/main/java/com/qmuiteam/plugin/Dep.kt index a0dd251e..315f45f9 100644 --- a/plugin/src/main/java/com/qmuiteam/plugin/Dep.kt +++ b/plugin/src/main/java/com/qmuiteam/plugin/Dep.kt @@ -14,7 +14,7 @@ object Dep { object QMUI { const val group = "com.qmuiteam" const val qmuiVer = "2.0.1" - const val archVer = "2.0.1_f_14" + const val archVer = "2.0.1" const val typeVer = "0.0.14" const val composeCoreVer = "0.0.1" const val composeVer = "0.0.1" diff --git a/qmuidemo/build.gradle.kts b/qmuidemo/build.gradle.kts index 0b7d6e42..6c897f87 100644 --- a/qmuidemo/build.gradle.kts +++ b/qmuidemo/build.gradle.kts @@ -33,7 +33,7 @@ android { keyPassword = properties.getProperty("RELEASE_KEY_PASSWORD") storeFile = file("qmuidemo.keystore") storePassword = properties.getProperty("RELEASE_STORE_PASSWORD") - enableV2Signing = false + enableV2Signing = true } } @@ -62,11 +62,15 @@ android { targetSdk = Dep.targetSdk versionCode = gitVersion versionName = Dep.QMUI.qmuiVer + + ndk { + abiFilters.add("arm64-v8a") + } } buildTypes { getByName("release") { isMinifyEnabled = true - proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") signingConfig = signingConfigs.getByName("release") } } @@ -90,4 +94,6 @@ dependencies { implementation(Dep.Flipper.flipper) kapt(project(":compiler")) kapt(project(":arch-compiler")) + + implementation("com.iqiyi.xcrash:xcrash-android-lib:3.1.0") } diff --git a/qmuidemo/proguard-rules.pro b/qmuidemo/proguard-rules.pro index 09064e34..26dc285c 100644 --- a/qmuidemo/proguard-rules.pro +++ b/qmuidemo/proguard-rules.pro @@ -23,4 +23,7 @@ -keep class com.qmuiteam.qmui.arch.record.RecordIdClassMapImpl { *; } -keep class com.qmuiteam.qmui.arch.scheme.SchemeMap {*;} --keep class com.qmuiteam.qmui.arch.scheme.SchemeMapImpl {*;} \ No newline at end of file +-keep class com.qmuiteam.qmui.arch.scheme.SchemeMapImpl {*;} + +-keep class com.facebook.jni.**{*;} +-keep class com.facebook.flipper.**{*;} \ No newline at end of file diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/QDApplication.kt b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/QDApplication.kt index 7717badf..d8e59b7f 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/QDApplication.kt +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/QDApplication.kt @@ -17,8 +17,11 @@ package com.qmuiteam.qmuidemo import android.annotation.SuppressLint import android.app.Application +import android.content.ContentValues import android.content.Context import android.content.res.Configuration +import android.os.Environment +import android.provider.MediaStore import android.util.Log import coil.ImageLoader import coil.ImageLoaderFactory @@ -32,12 +35,26 @@ import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager import com.qmuiteam.qmui.qqface.QMUIQQFaceCompiler import com.qmuiteam.qmuidemo.manager.QDSkinManager import com.qmuiteam.qmuidemo.manager.QDUpgradeManager +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import xcrash.TombstoneManager +import xcrash.XCrash +import java.io.File + /** * Demo 的 Application 入口。 * Created by cgine on 16/3/22. */ class QDApplication : Application(), ImageLoaderFactory { + + override fun attachBaseContext(base: Context?) { + super.attachBaseContext(base) + XCrash.init(this) + } + override fun onCreate() { super.onCreate() context = applicationContext @@ -64,10 +81,27 @@ class QDApplication : Application(), ImageLoaderFactory { QMUISwipeBackActivityManager.init(this) QMUIQQFaceCompiler.setDefaultQQFaceManager(QDQQFaceManager.getInstance()) QDSkinManager.install(this) - SoLoader.init(this, false) - val client = AndroidFlipperClient.getInstance(this) - client.addPlugin(InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())) - client.start() + if(BuildConfig.DEBUG){ + SoLoader.init(this, false) + val client = AndroidFlipperClient.getInstance(this) + client.addPlugin(InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())) + client.start() + } + + GlobalScope.launch(Dispatchers.IO) { + delay(5000) + for (file in TombstoneManager.getAllTombstones()) { + val contentValues = ContentValues() + contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, file.name) + contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "txt") + val uri = contentResolver.insert(MediaStore.Files.getContentUri("external"), contentValues) ?: continue + contentResolver.openOutputStream(uri)?.use { out -> + file.inputStream().use { ins -> + ins.copyTo(out) + } + } + } + } } override fun onConfigurationChanged(newConfig: Configuration) {