Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
1

Как настроить ProGuard в IDEA?

25.01.2014, 12:53. Показов 5553. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сабж. Искал, читал, но до конца так и не понял..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2014, 12:53
Ответы с готовыми решениями:

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

Как настроить шрифты в IntelliJ IDEA?
Установил oracle-jdk-7 на Ubuntu 12.04, также скачал архив для IDEA-community с сайта Jetbrains,...

INTELLIJ-IDEA. Как настроить туллбар
Здравствуйте дорогие программисты и активные пользователи чудо продукции джет брейинс! Раньше...

Java-IDEA-Hibernate как это настроить?
Здравствуйте. Впервые столкнулся с тем, что не могу изучить фреймворк всвязи с тем, что элементарно...

18
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 01:53  [ТС] 2
Никто не защищает свой код или чё?
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
30.01.2014, 07:26 3
Только начал разбираться... Пока учусь делать это через АНТ. Вроде ничего тяжелого... Но с тонкой настройкой еще не разбирался - взял встроенный файл настроек. После сборки попробовал взломать файл - тяжело читать (подменились имена классов)...

Добавлено через 2 часа 35 минут
Беру свои слова назад - это сложнее чем кажется! Успешно собрал, упаковал, зашифровал, подписал... и... теперь не запускается на телефоне! В момент установки успешно предлагает установить, прочитать разрешения и говорит "не установлено"... буду копать дальше! Если знаете причину этого (уже встречались) отпишитесь пожалуйста!

Добавлено через 1 час 56 минут
Похоже проблемы только в анте! Зашел в студию. Menu>Build>Generated Signed APK
Прошел по пунктам... Ключ уже был сделан мной раньше... Галочка использовать proguard. Результат успешно заработал!!!
А через ант пока успешно работает только дебюг версия
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 11:22  [ТС] 4
Цитата Сообщение от Tester64 Посмотреть сообщение
Галочка использовать proguard
- в том то и дело что этого недостаточно. Там надо еще файлик ручками прописать... А что туда писать - я не понял..
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
30.01.2014, 18:33 5
Там надо прописать 2 файлика! Первый - это ключ. Второй настройки прогуарда.

По настройкам прогуарда как я понял есть 2 стандартных варианта - быстрый и упаковывающий. Быстрый не пробовал. Сразу попробовал второй. Файл-образец (HelloWorld) сжимается с 20 кб до 10-11кб. Теоретически можно написать свой (кто-то ЗДЕСЬ на форуме выкладывал свою настройку).

Файл ключа надо сначала сгенерировать. Он простой. Инструкций куча. Хотя у меня есть вопрос по "подключам" - ЗАЧЕМ?

С кем из них проблемы?

Добавлено через 21 минуту
Не хочу каждый раз бегать по пунктам! Хочу батник, который соберет, упакует, подпишет и выложит новую версию на мой сайт одним кликом! В пунктах не могу даже определиться куда ляжет новый APK.
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 20:01  [ТС] 6
Tester64, как делать Signed APK - это я знаю, меня интересует настройка самого прогуарда...
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
30.01.2014, 22:30 7
В project.properties в конце добавляешь
Java
1
proguard.config=proguard-project.txt
В proguard-project.txt
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   [url]http://developer.android.com/guide/developing/tools/proguard.html[/url]
 
# Add any project specific keep options here:
 
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}
 
##---------------Begin: proguard configuration common for all Android apps ----------
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
 
-allowaccessmodification
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-repackageclasses ''
 
-dontwarn android.support.**
-dontwarn org.apache.harmony.**
-dontwarn com.tonicsystems.**
-dontwarn org.firebirdsql.**
-dontwarn org.antlr.**
-dontwarn org.apache.**
 
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService
 
# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn't save them.
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
 
# Preserve all native method names and the names of their classes.
-keepclasseswithmembernames class * {
native <methods>;
}
 
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
 
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
 
# Preserve static fields of inner classes of R classes that might be accessed
# through introspection.
-keepclassmembers class **.R$* {
public static <fields>;
}
 
# Preserve the special static methods that are required in all enumeration classes.
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
 
-keep public class * {
public protected *;
}
 
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}##---------------End: proguard configuration common for all Android apps ----------
У меня с такими настройками пошло. (только для Eclipse)
1
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 22:36  [ТС] 8
ASDFD12, ооо, буду пробовать..
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
30.01.2014, 23:01 9
Я с этим не заморачивался (пока).
Слишком много "тонких" настроек, которых за пол часа не перечислить...
Взял стандартный, который предлагает СДК по умолчанию
А в Ант пытаюсь использовать этот
...\android-sdk\tools\proguard\proguard-android-optimize.txt
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
09.02.2014, 13:31  [ТС] 10
ASDFD12, Tester64, до задницы тот ProGuard - дэкомпильнул и всё как на ладони
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
09.02.2014, 13:47 11
MegaSinner, слышал о HoseDex2jar, не знаю платна ли, но пишут что замусоривает код прилично))
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
09.02.2014, 14:15  [ТС] 12
ASDFD12, хоть и не люблю работать с текстом, но чувствую, что когда-то придется свою протекцию написать..
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
09.02.2014, 15:32 13
Цитата Сообщение от MegaSinner Посмотреть сообщение
дэкомпильнул и всё как на ладони
Странно! чем декомпилил? Когда я пытался, то у меня все сжималось до почти-неузнаваемости. Пробовал тем-же методом ЧУЖИЕ проекты также декомпильнуть? У меня названия классов, методов и переменных заменялись на a, b, c (случайные простые буквенные названия). APK реально сжимался до 2х раз.
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
12.02.2014, 00:18  [ТС] 14
Tester64, декомпилил через определённый сайт (единственный способ изо всех, что перепробовал). Чужие проекты тоже читабельны, а мой апк не ужался, а даже наоборот - увеличился...
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
12.02.2014, 18:44 15
Цитата Сообщение от MegaSinner Посмотреть сообщение
через определённый сайт
Можно ссылочку? Хочу свой проект попробовать декомпильнуть...

Может там хитрая система декомпилирования. Я пробовал через dex2jar. У меня собственная сборка из нескольких утилит по инструкциям в инете. Типа http://habrahabr.ru/post/111513/

А какой файл Вы указали как скрипт для обфускации?
Вы делаете это через Build>Generate Assigned APK (AnStudio)?
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
12.02.2014, 20:42  [ТС] 16
Цитата Сообщение от Tester64 Посмотреть сообщение
Вы делаете это через Build>Generate Assigned APK (AnStudio)?
Да, тудой..

Сцылочку кинул в ЛС.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
12.02.2014, 21:07 17
Цитата Сообщение от MegaSinner Посмотреть сообщение
Да, тудой..
Вроде правильно... А каой скрит выбираете? Стандартный?
На днях (сегодня занят) вспомню как это делал... отпишусь...
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
12.02.2014, 23:19  [ТС] 18
Tester64, Вот так, как здесь советовали:

project.properties:
Java
1
proguard.config=proguard-project.txt
В proguard-project.txt
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   [url]http://developer.android.com/guide/developing/tools/proguard.html[/url]
 
# Add any project specific keep options here:
 
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}
 
##---------------Begin: proguard configuration common for all Android apps ----------
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
 
-allowaccessmodification
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-repackageclasses ''
 
-dontwarn android.support.**
-dontwarn org.apache.harmony.**
-dontwarn com.tonicsystems.**
-dontwarn org.firebirdsql.**
-dontwarn org.antlr.**
-dontwarn org.apache.**
 
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService
 
# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn't save them.
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
 
# Preserve all native method names and the names of their classes.
-keepclasseswithmembernames class * {
native <methods>;
}
 
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
 
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
 
# Preserve static fields of inner classes of R classes that might be accessed
# through introspection.
-keepclassmembers class **.R$* {
public static <fields>;
}
 
# Preserve the special static methods that are required in all enumeration classes.
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
 
-keep public class * {
public protected *;
}
 
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}##---------------End: proguard configuration common for all Android apps ----------
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
13.02.2014, 01:51 19
У меня немного другой файл настроек... Я его взял в SDK (кажется). Может поможет:

Кликните здесь для просмотра всего текста
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.ne... usage.html

# Optimizations: If you don't want to optimize, use the
# proguard-android.txt configuration file instead of this one, which
# turns off the optimization flags. Adding optimization introduces
# certain risks, since for example not all optimizations performed by
# ProGuard works on all versions of Dalvik. The following flags turn
# off various optimizations known to have issues, but the list may not
# be complete or up to date. (The "arithmetic" optimization can be
# used if you are only targeting Android 2.0 or later.) Make sure you
# test thoroughly if you go this route.
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification
-dontpreverify

# The remainder of this file is identical to the non-optimized version
# of the Proguard configuration file (except that the other file has
# flags to turn off optimization).

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

# For native methods, see http://proguard.sourceforge.ne... tml#native
-keepclasseswithmembernames class * {
native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.ne... 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.ne... umerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class **.R$* {
public static <fields>;
}

# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontwarn android.support.**


Добавлено через 1 минуту
(загонять большой текст в спойлер круче чем просто явой - сравнивать неудобно)
0
13.02.2014, 01:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2014, 01:51
Помогаю со студенческими работами здесь

Как настроить androin sdk в IntelliJ IDEA 12
Подскажите пожалуйста!!! При создании проекта android я нажимаю на возле project sdk на new и...

Как настроить работу с пакетами IntelliJ IDEA?
Всем привет. Установил сегодня себе IntelliJ IDEA 16. Столкнулся с такой проблемой: раньше я писал...

Настроить IntelliJ IDEA для работы со Scala
Здравствуйте. Учусь писать на языке Scala. Есть опыт на Java, соответственно работаю в IntelliJ...

Как настраивать Proguard
Приветствую! Есть необходимость защитить приложение от декомпиляции, для этого хочу использовать...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru