Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.91
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
25.01.2014, 12:53     Как настроить ProGuard в IDEA? #1
Сабж. Искал, читал, но до конца так и не понял..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 01:53  [ТС]     Как настроить ProGuard в IDEA? #2
Никто не защищает свой код или чё?
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
30.01.2014, 07:26     Как настроить ProGuard в IDEA? #3
Только начал разбираться... Пока учусь делать это через АНТ. Вроде ничего тяжелого... Но с тонкой настройкой еще не разбирался - взял встроенный файл настроек. После сборки попробовал взломать файл - тяжело читать (подменились имена классов)...

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

Добавлено через 1 час 56 минут
Похоже проблемы только в анте! Зашел в студию. Menu>Build>Generated Signed APK
Прошел по пунктам... Ключ уже был сделан мной раньше... Галочка использовать proguard. Результат успешно заработал!!!
А через ант пока успешно работает только дебюг версия
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 11:22  [ТС]     Как настроить ProGuard в IDEA? #4
Цитата Сообщение от Tester64 Посмотреть сообщение
Галочка использовать proguard
- в том то и дело что этого недостаточно. Там надо еще файлик ручками прописать... А что туда писать - я не понял..
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
30.01.2014, 18:33     Как настроить ProGuard в IDEA? #5
Там надо прописать 2 файлика! Первый - это ключ. Второй настройки прогуарда.

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

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

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

Добавлено через 21 минуту
Не хочу каждый раз бегать по пунктам! Хочу батник, который соберет, упакует, подпишет и выложит новую версию на мой сайт одним кликом! В пунктах не могу даже определиться куда ляжет новый APK.
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 20:01  [ТС]     Как настроить ProGuard в IDEA? #6
Tester64, как делать Signed APK - это я знаю, меня интересует настройка самого прогуарда...
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
30.01.2014, 22:30     Как настроить ProGuard в IDEA? #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)
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 22:36  [ТС]     Как настроить ProGuard в IDEA? #8
ASDFD12, ооо, буду пробовать..
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
30.01.2014, 23:01     Как настроить ProGuard в IDEA? #9
Я с этим не заморачивался (пока).
Слишком много "тонких" настроек, которых за пол часа не перечислить...
Взял стандартный, который предлагает СДК по умолчанию
А в Ант пытаюсь использовать этот
...\android-sdk\tools\proguard\proguard-android-optimize.txt
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
09.02.2014, 13:31  [ТС]     Как настроить ProGuard в IDEA? #10
ASDFD12, Tester64, до задницы тот ProGuard - дэкомпильнул и всё как на ладони
ASDFD12
31 / 31 / 5
Регистрация: 15.09.2012
Сообщений: 408
09.02.2014, 13:47     Как настроить ProGuard в IDEA? #11
MegaSinner, слышал о HoseDex2jar, не знаю платна ли, но пишут что замусоривает код прилично))
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
09.02.2014, 14:15  [ТС]     Как настроить ProGuard в IDEA? #12
ASDFD12, хоть и не люблю работать с текстом, но чувствую, что когда-то придется свою протекцию написать..
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
09.02.2014, 15:32     Как настроить ProGuard в IDEA? #13
Цитата Сообщение от MegaSinner Посмотреть сообщение
дэкомпильнул и всё как на ладони
Странно! чем декомпилил? Когда я пытался, то у меня все сжималось до почти-неузнаваемости. Пробовал тем-же методом ЧУЖИЕ проекты также декомпильнуть? У меня названия классов, методов и переменных заменялись на a, b, c (случайные простые буквенные названия). APK реально сжимался до 2х раз.
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
12.02.2014, 00:18  [ТС]     Как настроить ProGuard в IDEA? #14
Tester64, декомпилил через определённый сайт (единственный способ изо всех, что перепробовал). Чужие проекты тоже читабельны, а мой апк не ужался, а даже наоборот - увеличился...
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
12.02.2014, 18:44     Как настроить ProGuard в IDEA? #15
Цитата Сообщение от MegaSinner Посмотреть сообщение
через определённый сайт
Можно ссылочку? Хочу свой проект попробовать декомпильнуть...

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

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

Сцылочку кинул в ЛС.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
12.02.2014, 21:07     Как настроить ProGuard в IDEA? #17
Цитата Сообщение от MegaSinner Посмотреть сообщение
Да, тудой..
Вроде правильно... А каой скрит выбираете? Стандартный?
На днях (сегодня занят) вспомню как это делал... отпишусь...
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
12.02.2014, 23:19  [ТС]     Как настроить ProGuard в IDEA? #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 ----------
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2014, 01:51     Как настроить ProGuard в IDEA?
Еще ссылки по теме:

Android Idea Intellij 12. Как импортировать библиотеку взятую с github?
Свое правило для Proguard Android
Android ProGuard ошибки
Android Оптимизация по размеру при использовании ProGuard
Android ProGuard сопротивление компилированию(

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

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,488
13.02.2014, 01:51     Как настроить ProGuard в IDEA? #19
У меня немного другой файл настроек... Я его взял в SDK (кажется). Может поможет:

Кликните здесь для просмотра всего текста
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/inde...ual/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.net/manu...es.html#native
-keepclasseswithmembernames class * {
native <methods>;
}

# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manu...les.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/manu...l#enumerations
-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 минуту
(загонять большой текст в спойлер круче чем просто явой - сравнивать неудобно)
Yandex
Объявления
13.02.2014, 01:51     Как настроить ProGuard в IDEA?
Ответ Создать тему
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru