diff --git a/app/matrixTrace/blackMethodList.txt b/app/matrixTrace/blackMethodList.txt index 502b68e02b..b1cfcf574c 100644 --- a/app/matrixTrace/blackMethodList.txt +++ b/app/matrixTrace/blackMethodList.txt @@ -1,6 +1,5 @@ [package] --keeppackage com/mogo/thread/opt/core/ --keeppackage com/mogo/eagle/core/function/main/threadopt/ +-keeppackage com/mogo/thread/ext/ -keeppackage com/mogo/launcher -keeppackage com/rousetime/android_startup/ -keeppackage com/mogo/systrace/ diff --git a/build.gradle b/build.gradle index 6dbf88f007..190f5f0714 100644 --- a/build.gradle +++ b/build.gradle @@ -34,7 +34,7 @@ buildscript { classpath "com.mogo.cloud:hook:${service_chain_version}" classpath "com.mogo.cloud:bizconfig:${plugin_version}" classpath 'com.volcengine:apm_insight_plugin:1.4.2' - classpath "com.mogo.thread.opt:plg:10.10.0" + classpath "com.mogo.thread.opt:plg:10.2.1_mogo" classpath "com.mogo.cloud:systrace:${plugin_version}" classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18' classpath "com.mogo.sticky:service:${plugin_version}" diff --git a/config.gradle b/config.gradle index 03c9fb64de..108f48c3d8 100644 --- a/config.gradle +++ b/config.gradle @@ -215,7 +215,7 @@ ext { //========================= autosize ====================== androidautoSize : 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1', - thread_opt : "com.mogo.thread.opt:lib:10.10.0", + thread_opt : "com.mogo.thread.opt:lib:10.2.1_mogo", weak_network : "com.mogo.weak:network:1.0.1", btrace : "com.bytedance.btrace:rhea-core:2.0.0", @@ -240,6 +240,6 @@ ext { ] } -static boolean isM1Chip() { +boolean isM1Chip() { return System.getProperty("os.name").contains("Mac") && System.getProperty("os.arch") == "aarch64" } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/build.gradle b/core/function-impl/mogo-core-function-hmi/build.gradle index 6df031e493..238cd8709e 100644 --- a/core/function-impl/mogo-core-function-hmi/build.gradle +++ b/core/function-impl/mogo-core-function-hmi/build.gradle @@ -75,8 +75,6 @@ dependencies { implementation rootProject.ext.dependencies.koomjava implementation rootProject.ext.dependencies.koomnative implementation rootProject.ext.dependencies.koomxhook - - implementation rootProject.ext.dependencies.thread_opt api project(':test:crashreport-apmbyte') compileOnly project(':core:function-impl:mogo-core-function-datacenter') implementation project(':foudations:mogo-commons') diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java index 5c98f74e04..8912c45ec6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java @@ -5,6 +5,7 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_MAI import android.content.Context; import com.bytedance.boost_multidex.BoostMultiDex; +import com.mogo.cloud.socket.SocketBuildConfig; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.module.MogoModule; @@ -14,12 +15,14 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.constants.MogoServicePaths; import com.mogo.eagle.core.function.api.chat.biz.ChatConsts; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager; import com.mogo.eagle.core.function.call.startup.CallerStartUpManager; -import com.mogo.eagle.core.function.main.threadopt.ThreadOptInitializer; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import java.lang.reflect.Field; + /** * 默认初始化一些基础服务配置 */ @@ -77,7 +80,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); - ThreadOptInitializer.init(); /*如果是主进程**/ // if (ProcessUtils.isMainProcess(this)) { AppLaunchTimeUtils.beginTimeCalculate(AppLaunchTimeUtils.COLD_START); diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/threadopt/ThreadOptInitializer.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/threadopt/ThreadOptInitializer.java deleted file mode 100644 index 65aa172428..0000000000 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/threadopt/ThreadOptInitializer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.mogo.eagle.core.function.main.threadopt; - - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import com.mogo.thread.opt.core.ThreadManager; -import com.mogo.thread.opt.core.annotation.Keep; -import com.mogo.thread.opt.core.config.ThreadConfig; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - - -@Keep -public class ThreadOptInitializer { - - - private static final ThreadConfig.TaskExecuteListener listener = new ThreadConfig.TaskExecuteListener() { - @Override - public boolean isEnabled() { - return true; - } - - @Override - public void onExecutorBefore(@NonNull ThreadConfig.TaskType taskType, @Nullable Object task, @Nullable String desc) { - - } - - @Override - public void onExecutorAfter(@NonNull ThreadConfig.TaskType taskType, @Nullable Object task, @Nullable String desc) { - - } - - @Override - public void onExecutorStateChanged(@NonNull ThreadPoolExecutor threadPoolExecutor, int core, int max, int active, long completed) { - - } - }; - - - public static void init() { - ThreadConfig.Builder builder = new ThreadConfig.Builder(); - builder.minKeepAliveTime(1, TimeUnit.SECONDS); - builder.maxKeepAliveTime(10, TimeUnit.SECONDS); - builder.listener(listener); - ThreadManager.INSTANCE.init(builder); - } -} diff --git a/core/function-impl/mogo-core-function-startup/build.gradle b/core/function-impl/mogo-core-function-startup/build.gradle index e70626291f..9ac8c3caf2 100644 --- a/core/function-impl/mogo-core-function-startup/build.gradle +++ b/core/function-impl/mogo-core-function-startup/build.gradle @@ -47,6 +47,7 @@ dependencies { kapt rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.android_start_up + implementation rootProject.ext.dependencies.thread_opt implementation project(':core:mogo-core-function-call') implementation project(":test:crashreport") diff --git a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/MogoStartUpProvider.kt b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/MogoStartUpProvider.kt index 88d0736fcc..29acccff70 100644 --- a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/MogoStartUpProvider.kt +++ b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/MogoStartUpProvider.kt @@ -7,6 +7,7 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.function.api.startup.IStartUpProvider import com.mogo.eagle.core.function.startup.stageone.APMStartup import com.mogo.eagle.core.function.startup.stageone.HttpDnsStartUp +import com.mogo.eagle.core.function.startup.stageone.ThreadOptStartup import com.mogo.eagle.core.function.startup.stagetwo.* import com.rousetime.android_startup.StartupListener import com.rousetime.android_startup.StartupManager @@ -53,6 +54,7 @@ class MogoStartUpProvider : IStartUpProvider { StartupManager.Builder() .addStartup(HttpDnsStartUp()) .addStartup(APMStartup()) + .addStartup(ThreadOptStartup()) .setConfig(config) .build(it) .start() diff --git a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/APMStartup.kt b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/APMStartup.kt index a8d46eb498..be1cf35858 100644 --- a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/APMStartup.kt +++ b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/APMStartup.kt @@ -21,6 +21,6 @@ class APMStartup : AndroidStartup() { } override fun dependenciesByName(): List { - return emptyList() + return listOf("com.mogo.eagle.core.function.startup.stageone.ThreadOptStartup") } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/ThreadOptStartup.kt b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/ThreadOptStartup.kt new file mode 100644 index 0000000000..3e6e293b92 --- /dev/null +++ b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/ThreadOptStartup.kt @@ -0,0 +1,56 @@ +package com.mogo.eagle.core.function.startup.stageone + +import android.content.* +import android.os.Process +import android.os.Trace +import android.util.* +import com.mogo.thread.ext.core.* +import com.mogo.thread.ext.core.config.* +import com.mogo.thread.ext.core.config.priority.* +import com.mogo.thread.ext.core.trace.* +import com.rousetime.android_startup.* +import java.io.* +import java.text.* +import java.util.* +import java.util.concurrent.TimeUnit.SECONDS + +class ThreadOptStartup: AndroidStartup() { + + override fun create(context: Context): Boolean { + ThreadManager + .init(ThreadConfig.Builder() + .maxKeepAliveTime(10, SECONDS) + .minKeepAliveTime(5, SECONDS) + .priorityConfig(PriorityConfig.Builder() + .checkInterval(1, SECONDS) + .setPriority("GLThread\\s+\\d+", Process.THREAD_PRIORITY_BACKGROUND) + .setPriority("Dispatch-\\w+", Process.THREAD_PRIORITY_BACKGROUND) + .build()) + .traceConfig(TraceConfig.Builder() + .enabled(false) + .trace(object : ITrace { + override fun enter(section: String) { + //Trace.beginSection(section) + //Log.d("TTTTTT", "enter->$section" ) + } + override fun exit() { + //Trace.endSection() + } + }) + .build()) + /*.dump(DumpConfig.Builder() + .dumpLogFilePath(File(context.getExternalFilesDir(null), "thread_dump_log_${ SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.ROOT).format(Date()) }.txt").absolutePath) + .dumpPeriod(5, SECONDS) + .threadRunThreshold(10, SECONDS) + .build())*/) + return true + } + + override fun callCreateOnMainThread(): Boolean { + return true + } + + override fun waitOnMainThread(): Boolean { + return true + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 1b04d6a455..5b0d7d4cf1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.daemon=true org.gradle.configureondemand=true org.gradle.parallel=true -org.gradle.jvmargs=-Xmx6144m +org.gradle.jvmargs=-Xmx4096m #开启gradle缓存 org.gradle.caching=true android.enableBuildCache=true @@ -143,6 +143,8 @@ ADAS_DATA_LIB_CHILD_VERSION=.4 # 是否支持patch升级 PATCH_UPGRADE_SUPPORT=true +# 线程优化版本 +THREAD_OPT_VERSION=4.0.1 # matrix版本 MATRIX_VERSION=2.0.8