Ответ 1
Попробуйте изменить -
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
IDE: Android Studio 1.1.0
Тема: ProGuard
Проблема: файлы или инструменты ProGuard, не распознанные Android Studio, getDefaultProguardFile
не могут быть разрешены и в приложении нет файлов proguard-android.txt
и proguard-rules.txt
, см. изображение ниже: ( от build.gradle)
Как исправить это и обеспечить защиту ProGuard для моего приложения?
Попробуйте изменить -
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
У меня была такая же проблема, как показано здесь:
Сообщение об ошибке показывает, что файл не найден и поэтому не читается. Тем не менее, я зашел в папку sdk/tools/proguard, чтобы найти файл, а наверху добавлен оператор, чтобы проверить, действительно ли файл был прочитан. Я поставил наверху: "Это приведет к его краху?"
Как вы можете видеть из этой ошибки, файл действительно был найден во время процесса сборки, и выражение, которое я добавил, разбило его. Таким образом, кажется, что ошибка "не может разрешить символ" дает ложный результат.
У меня действительно была такая же проблема. Итак, вот что заставило мой проект работать:
release {
minifyEnabled true
proguardFile 'proguard-rules.pro'
}
Протестировано этим кодом:
Log.d(TAG, "TEST!");
Log.i(TAG, "INFO!");
Log.e(TAG, "ERROR!");
В proguard.pro я разместил этот фрагмент (который удаляет все Log.d
-Statements в байтовом коде)
-assumenosideeffects class android.util.Log {
public static int d(...);
}
И кот говорит:
MainAct﹕ INFO!
MainAct﹕ ERROR!
- > именно то, что я пытался достичь:)
PS: Предполагается, что у вас есть файл proguard.pro
в папке модуля (aka 'app.).
Try:
proguardFiles.add(file('proguard-android.txt'))
proguardFiles.add(file('proguard-rules.txt'))
Эта структура работает в плагине gradle -experimental.
Я исправил проблему с Android Studio, не признав метод, используя двойные кавычки вместо сингла. Ниже приводится то, что я использовал:
release{
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro"
}
попробуйте это,
{
minifyEnabled false
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguardFiles 'proguard-rules.pro'
}
В моем случае:
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
замените runProguard false
на minifyEnabled false
.