feat: 移除 byteX,移除部分 log 输出调用

This commit is contained in:
chenjuntao
2025-03-31 16:23:43 +08:00
parent 31c8aad3c4
commit 93d16d3f56
3 changed files with 57 additions and 87 deletions

View File

@ -7,6 +7,61 @@
# Keep Attribute
-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod,SourceFile,LineNumberTable
# Remove log related code
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
public static *** println(...);
public static *** isLoggable(...);
}
-assumenosideeffects class java.lang.Throwable {
public *** printStackTrace(...);
}
-assumenosideeffects class java.io.PrintStream {
public *** println(...);
public *** print(...);
}
-assumenosideeffects class com.google.devtools.build.android.desugar.runtime.ThrowableExtension {
public *** printStackTrace(...);
}
-assumenosideeffects class com.lightgame.utils.Utils {
public static *** log(...);
}
-assumenosideeffects class com.gh.gamecenter.core.utils.MtaHelper {
public static *** onEvent(...);
public static *** onEventWithTime(...);
public static *** onEventWithBasicDeviceInfo(...);
}
# Remove all logging calls via JDK Loggers. They are generally from
# unused parts of third-party libraries.
-assumenosideeffects class java.util.logging.Logger {
void finest(...);
void finer(...);
void fine(...);
void info(...);
void warning(...);
void severe(...);
void throwing(...);
void log(...);
void logp(...);
static java.util.logging.Logger getLogger(...) return _NONNULL_;
boolean isLoggable(...) return false;
}
# Remove accesses to Level.<thing> that go unused.
-assumenosideeffects class java.util.logging.Level {
<fields>;
# Flogger uses Level objects, so do not set a return value for intValue().
int intValue();
}
# Remove fields of type Logger.
-assumenosideeffects class * {
java.util.logging.Logger * return _NONNULL_;
}
# OrmLite
-keep class com.j256.*
-keepclassmembers class com.j256.* { *; }

View File

@ -1,7 +1,6 @@
allprojects { project ->
buildscript {
ext.booster_version = '4.9.0'
ext.plugin_version = "0.3.0"
ext.booster_version = '5.0.0'
repositories {
mavenLocal()
@ -9,16 +8,10 @@ allprojects { project ->
mavenCentral()
jcenter()
maven { url 'https://oss.sonatype.org/content/repositories/public' }
maven { url "https://artifact.bytedance.com/repository/byteX/" }
maven { url 'https://maven.aliyun.com/repository/public' }
}
dependencies {
// byteX
classpath "com.bytedance.android.byteX:base-plugin:${plugin_version}"
classpath "com.bytedance.android.byteX:const-inline-plugin:${plugin_version}"
classpath "com.bytedance.android.byteX:method-call-opt-plugin:${plugin_version}"
classpath "com.bytedance.android.byteX:field-assign-opt-plugin:${plugin_version}"
// booster
classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version"
@ -45,62 +38,6 @@ allprojects { project ->
project.apply plugin: 'com.didiglobal.booster'
project.apply plugin: "com.gh.gamecenter.plugin"
project.apply plugin: 'bytex'
project.apply plugin: 'bytex.method_call_opt' // 移除 log https://github.com/bytedance/ByteX/blob/master/method-call-opt-plugin/README-zh.md
project.apply plugin: 'bytex.field_assign_opt' //去除重复的赋值 https://github.com/bytedance/ByteX/blob/master/field-assign-opt-plugin/README-zh.md
//
project.method_call_opt {
enable true
enableInDebug false
logLevel "DEBUG"
//是否在log中显示删除方法调用指令后的方法指令一般调试时使用
showAfterOptInsLog false
//需要删除的方法配置
methodList = [
//下面的每一项配置必须严格按照数据配置,一个地方不对这一项不生效。
//class#method#desc
"android/util/Log#v#(Ljava/lang/String;Ljava/lang/String;)I",
"android/util/Log#v#(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I",
"android/util/Log#d#(Ljava/lang/String;Ljava/lang/String;)I",
"android/util/Log#d#(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I",
"android/util/Log#i#(Ljava/lang/String;Ljava/lang/String;)I",
"android/util/Log#i#(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I",
"android/util/Log#w#(Ljava/lang/String;Ljava/lang/String;)I",
"android/util/Log#w#(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I",
"android/util/Log#e#(Ljava/lang/String;Ljava/lang/String;)I",
"android/util/Log#e#(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I",
"android/util/Log#println#(ILjava/lang/String;Ljava/lang/String;)I",
"java/lang/Throwable#printStackTrace#()V",
"com/google/devtools/build/android/desugar/runtime/ThrowableExtension#printStackTrace#(Ljava/lang/Throwable;)V",
//项目中的方法
"com/lightgame/utils/Utils#log#(Ljava/lang/String;)V",
"com/lightgame/utils/Utils#log#(Ljava/lang/int;Ljava/lang/String;Ljava/lang/String;)V",
"com/lightgame/utils/Utils#log#(Ljava/lang/String;Ljava/lang/String;)V",
"com/lightgame/utils/Utils#log#(Ljava/lang/String;Ljava/lang/Object;)V",
"com/lightgame/utils/Utils#log#(Ljava/lang/Object;)V",
"com/gh/gamecenter/common/util/MtaHelper#onEvent#(Ljava/lang/Object;Ljava/lang/String;)V",
"com/gh/gamecenter/common/util/MtaHelper#onEventWithTime#(Ljava/lang/String;I[Ljava/lang/String;)V",
"com/gh/gamecenter/common/util/MtaHelper#onEventWithBasicDeviceInfo#(Ljava/lang/String;[Ljava/lang/String;)V"
]
onlyCheckList = []
whiteList = [
"com/tencent/qqmini/minigame/opensdk/share/OpenSdkShareHelper*",
]
}
project.field_assign_opt {
enable false
enableInDebug false
logLevel "INFO"
removeLineNumber true // 同时移除赋值对应的行号信息(如果有的话),默认true。
whiteList = [
//白名单ClassName.FieldName 。不支持模式匹配
//"android.support.constraint.solver.ArrayRow.isSimpleDefinition"
]
}
}
}

View File

@ -1,7 +1,6 @@
allprojects { project ->
buildscript {
ext.booster_version = '4.9.0'
ext.plugin_version = "0.3.0"
ext.booster_version = '5.0.0'
repositories {
mavenLocal()
@ -14,12 +13,6 @@ allprojects { project ->
}
dependencies {
// byteX
classpath "com.bytedance.android.byteX:base-plugin:${plugin_version}"
classpath "com.bytedance.android.byteX:const-inline-plugin:${plugin_version}"
classpath "com.bytedance.android.byteX:method-call-opt-plugin:${plugin_version}"
classpath "com.bytedance.android.byteX:field-assign-opt-plugin:${plugin_version}"
// booster
classpath "com.didiglobal.booster:booster-gradle-plugin:$booster_version"
// classpath "com.didiglobal.booster:booster-transform-shared-preferences:$booster_version"
@ -35,7 +28,6 @@ allprojects { project ->
mavenCentral()
jcenter()
maven { url 'https://oss.sonatype.org/content/repositories/public' }
maven { url "https://artifact.bytedance.com/repository/byteX/" }
maven { url 'https://maven.aliyun.com/repository/public' }
}
@ -45,20 +37,6 @@ allprojects { project ->
project.apply plugin: 'com.didiglobal.booster'
project.apply plugin: "com.gh.gamecenter.plugin"
project.apply plugin: 'bytex'
project.apply plugin: 'bytex.field_assign_opt' //去除重复的赋值 https://github.com/bytedance/ByteX/blob/master/field-assign-opt-plugin/README-zh.md
project.field_assign_opt {
enable false
enableInDebug false
logLevel "INFO"
removeLineNumber true // 同时移除赋值对应的行号信息(如果有的话),默认true。
whiteList = [
//白名单ClassName.FieldName 。不支持模式匹配
//"android.support.constraint.solver.ArrayRow.isSimpleDefinition"
]
}
}
}