安卓工作室无法解决getDefaultProguardFile问题。

3

当我运行程序时没有问题,但是当我尝试生成签名的apk时,提示getDefaultProguardFile无法解析。我该如何解决这个问题?以下是代码。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.dose.apps.brainnoodles"
        minSdkVersion 8
        targetSdkVersion 21
        versionCode 13
        versionName "2.13"
    }
    buildTypes {
        release {
            //apply plugin: 'idea'
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile files('libs/InMobi-4.5.3.jar')
}

这是被要求的堆栈跟踪信息。
Warning:android.support.v4.view.accessibility.AccessibilityNodeInfoCompatApi22: can't find referenced method 'void setTraversalAfter(android.view.View,int)' in library class android.view.accessibility.AccessibilityNodeInfo
Warning:android.support.v4.media.session.MediaSessionCompatApi22: can't find referenced method 'void setRatingType(int)' in library class android.media.session.MediaSession
Warning:android.support.v4.view.accessibility.AccessibilityNodeInfoCompatApi22: can't find referenced method 'android.view.accessibility.AccessibilityNodeInfo getTraversalBefore()' in library class android.view.accessibility.AccessibilityNodeInfo
Warning:com.inmobi.commons.internal.ActivityRecognitionManager: can't find referenced class com.google.android.gms.common.GooglePlayServicesUtil
Warning:android.support.v4.view.accessibility.AccessibilityNodeInfoCompatApi22: can't find referenced method 'void setTraversalAfter(android.view.View)' in library class android.view.accessibility.AccessibilityNodeInfo
Warning:android.support.v4.view.accessibility.AccessibilityNodeInfoCompatApi22: can't find referenced method 'android.view.accessibility.AccessibilityNodeInfo getTraversalAfter()' in library class android.view.accessibility.AccessibilityNodeInfo
Warning:android.support.v4.view.accessibility.AccessibilityNodeInfoCompatApi22: can't find referenced method 'void setTraversalBefore(android.view.View)' in library class android.view.accessibility.AccessibilityNodeInfo
Warning:android.support.v4.view.accessibility.AccessibilityNodeInfoCompatApi22: can't find referenced method 'void setTraversalBefore(android.view.View,int)' in library class android.view.accessibility.AccessibilityNodeInfo
Warning:com.inmobi.commons.internal.ActivityRecognitionManager$a: can't find referenced class com.google.android.gms.common.GooglePlayServicesUtil
         You may need to add missing library jars or update their versions.
Warning:there were 6 unresolved references to classes or interfaces.
Warning:com.inmobi.commons.uid.a: can't find referenced class com.google.android.gms.common.GooglePlayServicesUtil
         If your code works fine without the missing classes, you can suppress
         the warnings with '-dontwarn' options.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning:there were 7 unresolved references to library class members.
         You probably need to update the library versions.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)
:app:proguardRelease FAILED
Error:Execution failed for task ':app:proguardRelease'.
> java.io.IOException: Please correct the above warnings first.
Information:BUILD FAILED

你能在终端中运行Gradle命令以发布堆栈跟踪吗? - Raghunandan
@Raghunandan 我应该运行哪个文本? - That Thatson
1
@ThatThatson http://developer.android.com/tools/building/building-cmdline.html - Raghunandan
@ThatThatson 看起来你没有正确引用库。我能看到很多找不到引用方法的错误信息。 - Raghunandan
@Raghunandan 好的,那我该怎么办?只有在将 minifyEnabled 设置为 true 时才会出现这个错误。 - That Thatson
显示剩余2条评论
3个回答

7
我遇到了同样的问题。请注意,日志指向您前往http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember,并在那里说:

如果您正在为Android开发,并且ProGuard抱怨找不到一个仅在最新版本的Android运行时中可用的方法,则应将project.properties文件或build.gradle文件中的构建目标更改为该最新版本。您仍然可以在AndroidManifest.xml文件中指定不同的minSdkVersion和不同的targetSdkVersion。

我将compileSdkVersiontargetSdkVersion从21更改为22,它就起作用了。


1
@ThatThatson 如果这个或任何答案解决了您的问题,请考虑通过点击复选标记接受它。这向更广泛的社区表明您已找到解决方案,并为回答者和您自己赢得了一些声誉。没有义务这样做。 - Sufian

1

@That Thatson :

只需更新您的buildTypes而不是您的。尝试这种方式。

buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

0

你可能需要用这个替换buildtypes代码部分

signingConfigs {
    release {
        storeFile file("release.keystore")
        storePassword "******"
        keyAlias "******"
        keyPassword "******"
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

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