在Java Library module下的build.gradle 加以下关键信息。
import proguard.gradle.ProGuardTask
buildscript {
dependencies {
classpath 'net.sf.proguard:proguard-gradle:5.2.1'
}
}
plugins{
id 'java'
}
compileJava {
//options.failOnError = false;
options.encoding = "UTF-8"
options.listFiles = true
options.warnings=false
targetCompatibility='1.8'
sourceCompatibility='1.8'
}
task proguardTask(type: ProGuardTask, dependsOn: compileJava) {
//这里需要具备Gradle Task 知识点
//让proguardTask 依赖 `compileJava`任务执行
tasks.jar.dependsOn proguardTask
println "proguarding"
// 配置ProGuardTask
printmapping "$buildDir/mapping.txt"
//配置混淆文件规则
configuration 'proguard-rules.pro'
//引入依赖库
libraryjars files(configurations.compile.findAll {}.collect())
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
//参与混淆的类
injars sourceSets.main.output
//混淆后的文件(Class 或其它)输出目录
String outDir = "$buildDir/proguard-classes"
outjars outDir
//compileJava任务处理后的class文件输出目录
File classesDir = sourceSets.main.output.classesDirs.getFiles()[0]
println("classDir:$classesDir")
// 清除上次的生成物
delete outDir
// 在本task的execute阶段,将混淆后的class文件替换正常class文件
doLast {
println "copying product:$classesDir"
// 删除原有的class文件
delete "$classesDir"
// 将混淆class文件复制过去
copy {
from outDir
into classesDir
}
}
}