Запутывающий пользовательский плагин Gradle - PullRequest
0 голосов
/ 13 апреля 2019

Я пишу пользовательский плагин Gradle. У меня есть основной класс, который extends org.gradle.api.Plugin<org.gradle.api.Project> и 4 других служебных класса. Плагин работает как положено. Теперь я хочу запутать код, прежде чем загружать его в jcenter. Я попробовал следующий подход.

build.gradle

import proguard.gradle.ProGuardTask

apply plugin: 'groovy'

....
task proguard(type: ProGuardTask, dependsOn: 'jar') {

    injars "$buildDir/libs/plugin-1.0-SNAPSHOT.jar"
    outjars "$buildDir/libs/plugin-1.0-obfuscated.jar"

    configuration 'proguard-rules.pro'
}
....

proguard-rules.pro

-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-verbose
-printmapping out.map
-renamesourcefileattribute SourceFile
-keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile, LineNumberTable, EnclosingMethod
-ignorewarnings

-keep class com.myplugin.MyCustomPlugin {
    public *;
}

Если я использую указанную выше конфигурацию, банка obfuscated содержит только класс MyCustomPlugin. Мои другие служебные классы не были включены в obfuscated jar.

Если я использую

-keep class com.myplugin.** {
    public *;
}

Все классы включены в obfuscated банку. Но запутывание не произошло для служебных классов.

AFAIK, Классы с атрибутом -keep class не будут запутаны, а все остальные классы должны быть запутаны. ИДК, почему не работает.

Я пропустил какие-либо параметры в proguard задании Gradle или proguard-rules.pro?

...