AndroidStudio 代码混淆proguard记录

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

阅读更多
个人分类: Android & Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭