移除 java 和 kotlin 代码中的Log 调用,使用R8时不能移除StringBuilder 的代码。能够减少包体积和代码泄露风险
- Java 使用 annotationProcessor 机制移除
- Kotlin 使用 KCP (Kotlin Compiler Plugin) 机制移除
要将插件发布到本地Maven仓库,请执行以下命令:
# 发布Java注解处理器
./gradlew :java-log-remover-processor:publishToMavenLocal
# 发布Kotlin编译器插件
./gradlew :kotlin-log-remover-plugin:publishToMavenLocal在项目根目录的build.gradle文件中添加以下配置:
buildscript {
repositories {
mavenLocal() // 添加本地Maven仓库
// 其他仓库...
}
dependencies {
// 添加Kotlin日志移除插件
classpath 'com.delete.android.log:kotlin-log-remover-plugin:1.0.0'
// 其他依赖...
}
}
allprojects {
repositories {
mavenLocal() // 添加本地Maven仓库
// 其他仓库...
}
}在应用模块的build.gradle文件中添加以下配置:
// 应用Kotlin日志移除插件
apply plugin: 'com.delete.android.log.kotlin-remover'
dependencies {
// 添加Java日志移除注解处理器
annotationProcessor 'com.delete.android.log:java-log-remover-processor:1.0.0'
// 其他依赖...
}
// 配置Kotlin日志移除插件
logRemover {
enabled = true // 启用日志移除
logMethods = ['v', 'd', 'i', 'w', 'e', 'wtf'] // 要移除的日志方法
}插件会在编译时移除所有的Android日志调用:
- Java代码中的
Log.d(),Log.i(),Log.e()等调用 - Kotlin代码中的
Log.d(),Log.i(),Log.e()等调用
这样可以确保发布版本中不包含调试日志,同时在开发过程中仍然可以使用日志进行调试。