混淆自定义Gradle插件

时间:2019-04-13 07:06:14

标签: gradle groovy android-gradle proguard gradle-plugin

我正在编写一个自定义的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 jar仅包含MyCustomPlugin类。我的其他实用程序类未包含在obfuscated jar中。

如果我使用

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

所有类都包含在obfuscated jar中。但是,实用程序类没有发生混淆。

AFAIK,不会混淆具有-keep class属性的类,而必须对所有其他类进行混淆。 IDK,为什么它不起作用。

我是否错过了proguard gradle任务或proguard-rules.pro中的任何参数?

0 个答案:

没有答案