Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 309
1

Как настраивать Proguard

28.06.2017, 16:26. Просмотров 512. Ответов 7

Приветствую!

Есть необходимость защитить приложение от декомпиляции, для этого хочу использовать Proguard. Почитал статью на оф. сайте, и другие источники, понял, что вещь надежная и востребованная. Непонятным осталось как его настраивать. Есть файл proguard-rules.pro в нем весь текст закомментирован.
На текущий момент при создании подписанного APK возникает ошибка:

Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> Job failed, see logs for details


Видимо нужно настроить какие-то правила для Proguard.
Если кто-то пользовался этим инструментов, прошу поделиться информацией.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2017, 16:26
Ответы с готовыми решениями:

Как настроить ProGuard в IDEA?
Сабж. Искал, читал, но до конца так и не понял..

proguard
Пытаюсь сделать обфускацию приложения при помощи Proguard. В теории вроде всё...

Proguard и NullPointerException
Задействуйте! Надеюсь кто-то поможет. Проблема такая. В release версии ( с...

ProGuard ошибки
Делаю компиляцию приложения, компилится хорошо, но в процессе работы приложения...

ProGuard на IntelliJ IDEA
Кто нибудь пробовал в IDEA использовать ProGuard? В project.properties...

7
ExFau$t
679 / 570 / 131
Регистрация: 08.05.2012
Сообщений: 2,823
28.06.2017, 16:53 2
Цитата Сообщение от Hank Посмотреть сообщение
Почитал статью на оф. сайте
Почитай ещё раз. Если очень грубо, то все классы, что попадаются в ошибке надо указать в правилах командой -keep или -keepclassmembers, например, ну в самом крайнем случае - -dontwarn
Примеры с комментариями:
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
0
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 309
28.06.2017, 17:14  [ТС] 3
Цитата Сообщение от ExFau$t Посмотреть сообщение
то все классы, что попадаются в ошибке
а где посмотреть какие классы попадаются в ошибке? У меня на закладке Message в студии только одна ошибка и целая простыня warning`ов.
0
ExFau$t
679 / 570 / 131
Регистрация: 08.05.2012
Сообщений: 2,823
28.06.2017, 19:16 4
Вот в warning'ах и ищи эти ошибки, там вроде недвусмысленно написано.
0
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 309
29.06.2017, 10:15  [ТС] 5
Куча вот таких warning`ов присутствует в списке

Warning:com.google.common.base.Absent: can't find referenced class javax.annotation.Nullable
Warning:com.google.common.base.Ascii: can't find referenced class javax.annotation.CheckReturnValue
Warning:com.google.common.base.CaseFormat$StringConverter: can't find referenced class javax.annotation.Nullable
Warning:com.google.common.base.CharMatcher: can't find referenced class javax.annotation.CheckReturnValue


Непонятно имеют они отношение к финальной ошибке или нет.
Можете на примере этих строк сказать, что нужно сделать, чтобы исправить эти предупреждения? Что нужно в proguard-rules.pro добавить?
0
ExFau$t
679 / 570 / 131
Регистрация: 08.05.2012
Сообщений: 2,823
29.06.2017, 10:38 6
Все ошибки исправляются индивидуально, у многих либ, особенно гугловских, в доках есть оптимальные правила. Если оптимальность не шибко важна, то:
-dontwarn com.google.common.base.Absent
или
-dontwarn com.google.common.base.**
0
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 309
29.06.2017, 18:02  [ТС] 7
Добавил правила, как вы сказали, предупреждения пропали кроме одного. Теперь в message валится следующее:
Warning:Exception while processing task java.io.IOException: Can't write [C:\Android\App\Vintegra\app\build\intermediates\transforms\proguard\release\jars\3\1f\main.jar] (Can't read [C:\Users\grigoriev\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.7\751f548c85fa49f330cecbb1875893f971b33c4e\gson-2.7.jar(;;;;;;**.class)] (Duplicate zip entry [com/google/a/a/a.class == gson-2.7.jar:com/google/gson/annotations/Expose.class]))
Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> Job failed, see logs for details


Как это исправить ума не приложу, весь день мучаюсь.
0
ExFau$t
679 / 570 / 131
Регистрация: 08.05.2012
Сообщений: 2,823
30.06.2017, 00:02 8
Clean пробовал?

Добавлено через 1 минуту
Беглый поиск:
https://stackoverflow.com/questions/...-write-or-read
0
30.06.2017, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2017, 00:02

ProGuard сопротивление компилированию(
Народ всем привет. Уже три дня бьюсь с ProGuard все время выходит такая ошибка:...

Свое правило для Proguard
Как создать правило для Proguard? т.е. так чтобы он шифровал только нужные мне...

Приложение не запускается после обработки Proguard
у меня в манифесте стоит minifyenabled true, ну то есть абфускация в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru