Обфускация в Java 9+
Для правильной обфускации Proguard должен знать о всех классах в Java. До Java 9 можно было добавить rt.jar в libraryjars, но теперь единого файла со всеми классами нет, они хранятся в jmod-файлах.
Данный Gradle-таск решает эту проблему.
Данный Gradle-таск решает эту проблему.
- task proguard(dependsOn: jar, type: proguard.gradle.ProGuardTask) {
- configuration "proguard-rules.pro"
- injars "dist/app.jar"
- outjars "dist/app-obf.jar"
- if (System.getProperty('java.version').startsWith('1.')) {
- libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
- } else {
- def jmods = files { file("${System.getProperty('java.home')}/jmods").listFiles() }
- jmods.each {
- libraryjars it, jarfilter: '!**.jar', filter: '!module-info.class'
- }
- }
- }