AndroidStudio 代码混淆proguard记录

来源:互联网 发布:acdsee激活软件 编辑:程序博客网 时间:2024/06/10 00:12

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”,在进行签名打包即可!

0 0