AndroidStudio 代码混淆proguard记录

本文详细记录了在AndroidStudio中使用proguard进行代码混淆的步骤,并分享了遇到的常见问题及解决方法,包括如何配置混淆规则、构建签名APK以及处理编译过程中的错误,特别强调了主工程与库工程间的引用冲突导致的IOException Duplicate Zip Entry问题的解决策略。

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

AndroidStudio与Eclipse+ADT一样,同样使用proguard进行代码混淆,但是二者在实际使用中仍有区别,本文旨在记录自己在使用中遇到的问题。

一、proguard使用步骤

1. 配置proguard-rule.pro

假设我们的主工程叫MyApplication,那么我们在MyApplication目录下的build.gradle中,编写代码如下:

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':ImageLoader')
    compile project(':UploadFileManager')
    compile project(':numberpicker_library')
    compile project(':PhoneDialer')
    compile project(':GlowPadView')
    compile project(':MulThreadDownloader')
    compile project(':library')
}

android {
    compileSdkVersion 15
    buildToolsVersion "22.0.1"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }

        instrumentTest.setRoot('tests')
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }

    buildTypes {
        release {
        //我们在buildTypes[release]配置中执行混淆
            minifyEnabled true //开启混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-project.txt'//指定proguard的混淆配置文件
        }

    }
}

上述代码中,getDefaultProguardFile(‘proguard-android.txt’)是获取SDK包中默认的proguard-android.txt路径,这里指定了两个配置文件,两个文件会在实际执行过程中整合在一起。而后面的‘proguard-project.txt’其实按照官方的说法,应该叫‘proguard-rule.pro’,但是其内容格式是和ADT上的配置是一模一样。

值得一提的是,在AndroidStudio中,‘proguard-project.txt’配置得到了简化,不再需要编写#-libraryjars libs/xxx.jar这样的代码行,工具会自动帮我们引入所有库。

2. Build->Generate Signed APK

点击“Build->Generate Signed APK”菜单项,一步一步填写签名相关信息直到最后一样,选择buildTypes[release](我们上面就是针对release去配置),最终等待构建APK

二、问题记录:

1.IOException Duplicate Zip Entry

这个是因为在编译过程中,主工程与库工程有共同的引用包xxx.jar,移除主工程中重复引用的包,然后执行“Build->Rebuild”,在进行签名打包即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值