安卓:任务app:proguardRelease执行失败

10

我无法为我的应用程序生成已签名的APK文件,我卡在了错误java.io.IOException Execution failed for task:'app:proguardRelease'上,我认为我拥有的是一个基本的gradle文件,请参见下面的内容。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.okason.clients"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.api-client:google-api-client:1.19.0'
    compile 'com.google.android.gms:play-services:6.1.71'
    compile 'com.android.support:support-v4:21.0.0'
    compile 'com.android.support:appcompat-v7:21.0.0'
}

生成的 Proguard-rules.pro 文件为空,而且我没有改动 SDK 中的 proguard-android.txt 文件。我甚至尝试将该文件复制到 app.gradle 文件所在位置的根目录,但仍然不成功。

按照这个 [SO Question][1] 的建议运行 gradlew.bat assembleRelease 命令成功了。请问有人能看一下并告诉我我做错了什么吗?我已经将 SDK 和 Android Studio 更新到最新版本了。


[1]: https://stackoverflow.com/questions/20281233/gradle-proguard-empty-proguard-rules-pro "SO Question"

你遇到了什么具体的错误?有各种各样的IOExceptions。 - Scott Barta
这是一个与程序相关的文本内容,请将其翻译为中文,返回纯文本数据:任务执行失败:“app:proguardRelease”。 - Val Okafor
2个回答

3

我认为您可以在不关闭Proguard的情况下避免错误。请参考Eric Schlenz先生在这个问题上的答案。为了让构建能够通过proguard,您需要将它抱怨的包添加到proguard-project.txt文件中的-dontwarn条目中。


2

通过在app.gradle文件中将minifyEnabled true设置为minifyEnabled false来解决问题。


50
但那只是关闭了Proguard,如果我仍然希望启用Proguard呢? - Suragch
1
Sinenes关于使用-nowarn的回答应该被接受。而不是这个。 - Logic1
1
正确的解决方案应该包括启用Proguard。 - amorenew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接