美文网首页
Idea插件开发中使用ProGuard混淆代码

Idea插件开发中使用ProGuard混淆代码

作者: 不废的废柴 | 来源:发表于2020-02-01 17:29 被阅读0次

    配置gradle插件

    gradle配置ProGuard插件

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'net.sf.proguard:proguard-gradle:6.2.2'
        }
    }
    

    添加混淆task

    // idea 依赖所在目录
    def ideaPath = "xxx"
    
    task proguard(type: proguard.gradle.ProGuardTask, dependsOn: jar) {
        // 输出混淆前->混淆后的映射
        printmapping "$buildDir/mapping.txt"
        // 混淆规则文件
        configuration 'proguard-rules.pro'
        
        // 项目依赖jar
        libraryjars configurations.runtimeClasspath.collect()
        // jdk 依赖,区分jdk8 前后版本
        if (System.getProperty('java.version').startsWith('1.')) {
            libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
        } else {
            libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
            libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
        }
        // 如果使用了插件,附加插件jar
        libraryjars fileTree("$ideaPath/plugins/java/lib").filter { !it.name.startsWith("debugger") }.collect()
        // idea 依赖的jar
        libraryjars files("$ideaPath/lib")
    
    
        def f = jar.archiveFile.get().asFile
        def p = new File(f.parent, "tmp.jar")
        def outPath = f.absolutePath
        if (p.exists()) {
            p.delete()
        }
        if (f.exists()) {
            f.renameTo(p)
        }
    
        // 混淆输入
        injars p
        // 混淆输出
        outjars file(outPath)
    }
    
    

    配置task依赖关系

    prepareSandbox.dependsOn("proguard")
    

    配置混淆文件

    保证plugin.xml中使用到的class不会被混淆就可以了

    如果有design文件,保证使用class的不被混淆

    一般的ui只需要添加下面这个keep就可以了

    -keep class * extends javax.swing.JComponent
    

    最后运行 runIde 就可以看到混淆后的执行效果了

    相关文章

      网友评论

          本文标题:Idea插件开发中使用ProGuard混淆代码

          本文链接:https://www.haomeiwen.com/subject/ofexxhtx.html