AndroidStudio 3.2 打混淆jar包

本文介绍了如何在Android Studio 3.2中进行混淆并打包特定类文件的jar包,包括引用library、修改build.gradle、配置混淆脚本以及检查release目录下的classes.jar。注意,如果遇到问题,可能是Gradle版本不兼容,文中提到了作者的Gradle版本环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、引用此library,打包apk,生成对应release目录

 

2、library  build.gradle中添加

apply plugin: 'com.android.application'
buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'net.sf.proguard:proguard-gradle:5.2.1'
    }
}

import proguard.gradle.ProGuardTask

def jarPath = 'build/outputs/jar/repackaged.jar'
task makeJar(type: ProGuardTask, dependsOn: "build") {
    //删除之前编译混淆jar包
    delete jarPath
    // 未混淆的jar,不同gradle版本目录不一样,坑坑坑坑坑
//    injars 'build/intermediates/packaged-classes/release/classes.jar'
    injars 'build/libs/carryFramework.jar'
    // 混淆后的jar路径
    outjars jarPath
    // 混淆文件
    configuration 'makejar-rules.pro'
}

3、混淆脚本

##引入依赖包rt.jar(jdk路径)(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)
-libraryjars '/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre/lib/rt.jar'
##引入、依赖包android.jar(android SDK路径)(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)
-libraryjars '/Users/xievxin/Library/Android/sdk/platforms/android-23/android.jar'
##如果用到Appcompat包,需要引入(注意:如在makeJar的时候提示指定了两次,可以将其注释掉)
##-libraryjars 'D:\AndroidStudioProjects\MyApplication\mylibrary\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.4.0\jars\classes.jar'
##-libraryjars 'D:\AndroidStudioProjects\MyApplication\mylibrary\build\intermediates\exploded-aar\com.android.support\support-v4\23.4.0\jars\classes.jar'

-keep class com.xiex.sdk.**{*;}

4、检查对应release目录下有classes.jar,在控制台输入

gradlew makeJar
or
./gradlew makeJar

 

(注:JD-GUI有缓存,最好将jar拖入的时候换个名字。)

如果过程中还出现报错,很有可能是Gradle版本引起。笔者的环境是:

moudle:

project:

 

 

扩展,打指定类文件jar:

task releaseJar(type: Jar) {
    baseName "carryFramework"
    def fromDir = "${project.buildDir}/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/carry/"
    from fromDir
    into('com/carry')

    //去掉不需要打包的目录和文件
    exclude('BuildConfig.class', 'R.class')

    //去掉R$开头的文件
    exclude{ it.name.startsWith('R$')}
}
releaseJar.dependsOn build

如果要混淆的话: 

buildTypes {
    debug {
        minifyEnabled true 
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值