Android Studio& ProGuard:无法解析符号getDefaultProguardFile?

时间:2015-04-09 00:13:25

标签: android android-studio proguard android-gradle

IDE :Android Studio 1.1.0

主题:ProGuard

问题:Android Studio无法识别的ProGuard文件或工具getDefaultProguardFile 无法解析且没有proguard-android.txt和{{1应用程序中的文件,请参见下图:(来自build.gradle)

build.gradle screenshot

如何修复此问题并为我的应用程序实现ProGuard保护?

7 个答案:

答案 0 :(得分:8)

我遇到了同样的麻烦:

enter image description here

错误消息使得看起来好像找不到文件,因此无法读取。但是,我进入sdk / tools / proguard文件夹找到该文件,并在顶部添加了一个语句来测试该文件是否实际被读取。我把它放在顶部"这会崩溃吗?"

enter image description here

正如您从错误中看到的那样,在构建过程中确实找到了该文件,并且我添加的语句使其崩溃。因此,似乎"无法解决符号"错误是假阳性。

答案 1 :(得分:6)

尝试更改为 -

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

答案 2 :(得分:4)

我真的遇到了同样的问题。所以这就是我的项目工作的原因:

release {
    minifyEnabled true
    proguardFile 'proguard-rules.pro'
}

通过此代码测试:

 Log.d(TAG, "TEST!");
 Log.i(TAG, "INFO!");
 Log.e(TAG, "ERROR!");

在proguard.pro中,我放置了这个代码段(删除了所有Log.d - 字节代码中的语句)

-assumenosideeffects class android.util.Log {
    public static int d(...);
}

猫说:

MainAct﹕ INFO!
MainAct﹕ ERROR!

- >正是我试图实现的目标:)

PS:假设您在模块(又名“app”)文件夹中有proguard.pro文件。

答案 3 :(得分:1)

尝试:

proguardFiles.add(file('proguard-android.txt')) proguardFiles.add(file('proguard-rules.txt'))

此结构适用于 gradle-experimental 插件。

答案 4 :(得分:0)

我修复了Android Studio无法通过使用双引号而不是单引号来识别方法的问题。以下是我最终使用的内容:

    release{
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile("proguard-android.txt"),
                "proguard-rules.pro"
    }

答案 5 :(得分:0)

试试这个,

<EventData>
  <Data Name="ContextId">{80000029-0003-FD00-B63F-84710C7967BB}</Data>
  <Data Name="BytesSent">9414</Data>
  <Data Name="BytesReceived">596</Data>
  <Data Name="HttpStatus">500</Data>
  <Data Name="HttpSubStatus">0</Data>
</EventData>

答案 6 :(得分:-7)

就我而言:

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

runProguard false替换为minifyEnabled false