IDE :Android Studio 1.1.0
主题:ProGuard
问题:Android Studio无法识别的ProGuard文件或工具getDefaultProguardFile
无法解析且没有proguard-android.txt
和{{1应用程序中的文件,请参见下图:(来自build.gradle)
如何修复此问题并为我的应用程序实现ProGuard保护?
答案 0 :(得分:8)
我遇到了同样的麻烦:
错误消息使得看起来好像找不到文件,因此无法读取。但是,我进入sdk / tools / proguard文件夹找到该文件,并在顶部添加了一个语句来测试该文件是否实际被读取。我把它放在顶部"这会崩溃吗?"
正如您从错误中看到的那样,在构建过程中确实找到了该文件,并且我添加的语句使其崩溃。因此,似乎"无法解决符号"错误是假阳性。
答案 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
。