Exclude files using proguard rules

2019-08-11 20:37发布

问题:

I am trying to reduce the size of the apk using proguard . I am getting these warnigs messages while doing so ,

Warning: can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-lang-2.6.jar:META-INF/LICENSE.txt])
Warning: can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-lang-2.6.jar:META-INF/NOTICE.txt])
Warning: can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])

Apart from keeping classes is there any way to exclude these files ? I have excluded these in gradle file but that doesn't seem to work .

回答1:

if you are using Android Studio , add this

to your build.gradle

packagingOptions {
                exclude 'META-INF/LICENSE.txt'
                exclude 'META-INF/NOTICE.txt'
                exclude '.README'
            }

/// complete example

android {
    compileSdkVersion 23
    buildToolsVersion '22.0.1'
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName '1.0'
        renderscriptTargetApi 22
    }
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            renderscriptDebuggable true
            versionNameSuffix "-debug"
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            debuggable false
            minifyEnabled true
            shrinkResources false
            renderscriptDebuggable false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude '.README'
    }

}