使用 Android studio 中的 gradle 删除发布版本的代码行
Remove code lines on release version using gradle in Android studio
我已经构建了一个带有 Logger class 的 SDK JAR 项目,用于通知系统日志。
例如:
Logger.log("error on line 123 please check", Logger.SDK_DEBUG);
目前我可以使用的日志级别很少。
我会在发布构建时删除 JAR 构建过程之前代码中带有 Logger.SDK_DEBUG 的所有日志消息。 Gradle 可以吗?
我写了一个 gradle 脚本来处理项目中所有记录器行的删除。在任何 Gradle 构建命令之前,您将需要 运行 这个。
task deleteJavaDebugLogs << {
description("This function will delete all SDK DEBUG log level from the project, be careful with it!")
//Put your project full path for exmple 'src/main/java/myproject' , the path must be with quotes
FileTree javaFiles = fileTree('[your_project_path]') {
// if you have more files that are not .java include them also.
include '**/*.java'
}
String regex = "Logger.log[^,]+[^L]+(.*)Logger.SDK_DEBUG[^;];"
javaFiles.each { File javaFile ->
println "Start replacing regex on $javaFile.name"
String content = javaFile.getText()
content = content.replaceAll(regex, "")
javaFile.setText(content)
}
}
祝你好运! :)
我还没有测试过它,但从代码混淆器的定义来看,它应该为你做这件事。因为它应该找到所有无法访问的代码并将其删除。如果 Logger.SDK_DEBUG 是最终的,他应该知道它是不可访问的吧?
我已经构建了一个带有 Logger class 的 SDK JAR 项目,用于通知系统日志。 例如:
Logger.log("error on line 123 please check", Logger.SDK_DEBUG);
目前我可以使用的日志级别很少。
我会在发布构建时删除 JAR 构建过程之前代码中带有 Logger.SDK_DEBUG 的所有日志消息。 Gradle 可以吗?
我写了一个 gradle 脚本来处理项目中所有记录器行的删除。在任何 Gradle 构建命令之前,您将需要 运行 这个。
task deleteJavaDebugLogs << {
description("This function will delete all SDK DEBUG log level from the project, be careful with it!")
//Put your project full path for exmple 'src/main/java/myproject' , the path must be with quotes
FileTree javaFiles = fileTree('[your_project_path]') {
// if you have more files that are not .java include them also.
include '**/*.java'
}
String regex = "Logger.log[^,]+[^L]+(.*)Logger.SDK_DEBUG[^;];"
javaFiles.each { File javaFile ->
println "Start replacing regex on $javaFile.name"
String content = javaFile.getText()
content = content.replaceAll(regex, "")
javaFile.setText(content)
}
}
祝你好运! :)
我还没有测试过它,但从代码混淆器的定义来看,它应该为你做这件事。因为它应该找到所有无法访问的代码并将其删除。如果 Logger.SDK_DEBUG 是最终的,他应该知道它是不可访问的吧?