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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
#1

ProGuard ошибки - Программирование Android

11.01.2016, 21:14. Просмотров 321. Ответов 12
Метки нет (Все метки)

Делаю компиляцию приложения, компилится хорошо, но в процессе работы приложения вылазят ошибки
Кликните здесь для просмотра всего текста
01-11 22:51:24.745 2552-2747/com.app E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.ExceptionInInitializerError
at a.a.b.g.<init>(Unknown Source)
at a.a.b.f.<init>(Unknown Source)
at a.a.c.di.b(Unknown Source)
at a.a.c.di.a(Unknown Source)
at a.a.c.b.a(Unknown Source)
at a.a.c.ae.a(Unknown Source)
at a.a.a.a.a(Unknown Source)
at a.a.a.f.e(Unknown Source)
at a.a.a.b.a(Unknown Source)
at com.app.GP.doInBackground(Unknown Source)
at com.app.GP.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)*
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)*
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)*
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)*
at java.lang.Thread.run(Thread.java:856)*
Caused by: java.lang.ExceptionInInitializerError
at a.a.b.p.<clinit>(Unknown Source)
at a.a.b.g.<init>(Unknown Source)*
at a.a.b.f.<init>(Unknown Source)*
at a.a.c.di.b(Unknown Source)*
at a.a.c.di.a(Unknown Source)*
at a.a.c.b.a(Unknown Source)*
at a.a.c.ae.a(Unknown Source)*
at a.a.a.a.a(Unknown Source)*
at a.a.a.f.e(Unknown Source)*
at a.a.a.b.a(Unknown Source)*
at com.app.GP.doInBackground(Unknown Source)*
at com.app.GP.doInBackground(Unknown Source)*
at android.os.AsyncTask$2.call(AsyncTask.java:287)*
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)*
at java.util.concurrent.FutureTask.run(FutureTask.java:137)*
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)*
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)*
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)*
at java.lang.Thread.run(Thread.java:856)*
Caused by: java.lang.NullPointerException
at java.util.Properties.load(Properties.java:246)
at a.a.b.m.d(Unknown Source)
at a.a.b.m.<clinit>(Unknown Source)
at a.a.b.p.<clinit>(Unknown Source)*
at a.a.b.g.<init>(Unknown Source)*
at a.a.b.f.<init>(Unknown Source)*
at a.a.c.di.b(Unknown Source)*
at a.a.c.di.a(Unknown Source)*
at a.a.c.b.a(Unknown Source)*
at a.a.c.ae.a(Unknown Source)*
at a.a.a.a.a(Unknown Source)*
at a.a.a.f.e(Unknown Source)*
at a.a.a.b.a(Unknown Source)*
at com.app.GP.doInBackground(Unknown Source)*
at com.app.GP.doInBackground(Unknown Source)*
at android.os.AsyncTask$2.call(AsyncTask.java:287)*
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)*
at java.util.concurrent.FutureTask.run(FutureTask.java:137)*
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)*
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)*
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)*
at java.lang.Thread.run(Thread.java:856)*
01-11 22:51:24.777 2552-2552/com.app D/MainActivity: onPause
01-11 22:51:25.333 2552-2552/com.app D/OpenGLRenderer: TextureCache::flush: target size: 85039
01-11 22:51:25.333 2552-2552/com.app D/MainActivity: onDestroy
01-11 22:51:25.333 2552-2552/com.app E/WindowManager: Activity com.app.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@535ab828 that was originally added here
android.view.WindowLeaked: Activity com.app.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@535ab828 that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:374)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
at android.view.Window$LocalWindowManager.addView(Window.java:547)
at android.app.Dialog.show(Dialog.java:277)
at android.app.ProgressDialog.show(ProgressDialog.java:116)
at android.app.ProgressDialog.show(ProgressDialog.java:104)
at com.app.GP.onPreExecute(Unknown Source)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
at android.os.AsyncTask.execute(AsyncTask.java:534)
at com.app.MainActivity.onOptionsItemSelected(Unknown Source)
at android.app.Activity.onMenuItemSelected(Activity.java:2534)
at android.support.v4.b.t.onMenuItemSelected(Unknown Source)
at android.support.v7.a.u.onMenuItemSelected(Unknown Source)
at android.support.v7.view.n.onMenuItemSelected(Unknown Source)
at android.support.v7.view.n.onMenuItemSelected(Unknown Source)
at android.support.v7.a.ax.a(Unknown Source)
at android.support.v7.widget.fq.a(Unknown Source)
at android.support.v7.widget.x.a(Unknown Source)
at android.support.v7.view.menu.i.a(Unknown Source)
at android.support.v7.view.menu.m.b(Unknown Source)
at android.support.v7.view.menu.i.a(Unknown Source)
at android.support.v7.view.menu.i.a(Unknown Source)
at android.support.v7.widget.ActionMenuView.a(Unknown Source)
at android.support.v7.view.menu.ActionMenuItemView.onClick(Unknown Source)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Это proguard-rules.pro
Java
1
2
3
4
5
6
7
8
9
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
   public *;
}
-keep public class com.nhaarman.listviewanimations.*
-keep public class com.app.GP {
    protected *;
}
-keep class se.emilsjolander.** { *; }
-dontwarn se.emilsjolander.**
Это app
Java
1
2
3
4
5
6
7
8
9
10
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
    compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
    compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'org.jsoup:jsoup:1.8.3'
}
Что еще странно если убрать строчку -keep public class com.app.GP (это AsyncTask) то все равно такая же ошибка.
И почему MainActivity не обфусцируется?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2016, 21:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ProGuard ошибки (Программирование Android):

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

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

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

ProGuard на IntelliJ IDEA - Программирование Android
Кто нибудь пробовал в IDEA использовать ProGuard? В project.properties добавил: proguard.config=proguard-project.txt В окне...

ProGuard сопротивление компилированию( - Программирование Android
Народ всем привет. Уже три дня бьюсь с ProGuard все время выходит такая ошибка: Warning:okio.DeflaterSink: can't find referenced class...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
11.01.2016, 21:30  [ТС] #2
Добавил -keeppackagenames org.jsoup.nodes ошибка вроде ушла.
Но почему не все классы шифрует? Смотрю логи в эмуляторе, некоторый классы например тот же AsyncTask зашифрован, а MainActivity, Настройки, Абаут нет?
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
12.01.2016, 10:32 #3
Вы не логи смотрите, а декомпилируйте Ваш результат.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
12.01.2016, 12:18  [ТС] #4
bastrakov, т.е. посмотреть на сам код? Хорошо, посморю.
Но сомневаюсь что там будет обфускация, т.к. логи во всех классах пишу так:
Java
1
2
String TAG = this.getClass().getSimpleName();
void log(String txt) {if (log) Log.d(TAG, txt);}
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,528
12.01.2016, 12:23 #5
Цитата Сообщение от Rube Посмотреть сообщение
Но почему не все классы шифрует? Смотрю логи в эмуляторе, некоторый классы например тот же AsyncTask зашифрован, а MainActivity, Настройки, Абаут нет?
шифрует все классы и методы которые не исключены. просто вместе с вашими правилами применяются еще одни. те которые в proguard-android.txt который лежит в SDK. а там прописано что-нибудь вроде
-keep class * extends android.app.Activity
и в случае с главной активити это необходимо иначе система просто не найдет вашу активити так как ее имя будет отличатся от указанного в манифесте
так же может быть написано что-то вроде
# 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);
}
зачем это необходимо написано в комменте
3
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
12.01.2016, 12:25 #6
а так короче :-)
Java
1
Log.d(this.getClass().getName(), "test");
и проблем с обсфукацией (кроме того, что я тоже затрахался отключать внешние библиотеки в этом процессе) у меня нет.

2vxg
proguard-android.txt используется только если его умышленно включили. по дефолту используется proguard-rules.pro
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
12.01.2016, 13:34  [ТС] #7
Цитата Сообщение от bastrakov Посмотреть сообщение
а так короче :-)
Это гениально
vxg, а что на это ответите?
Цитата Сообщение от bastrakov Посмотреть сообщение
по дефолту используется proguard-rules.pro
или все же proguard-android.txt тоже учавствует и bastrakov как всегда спешит с ответами?

Добавлено через 1 минуту
А забыл сказать правила по умолчанию прописаны, т.е. оба файла указаны.
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,528
12.01.2016, 13:38 #8
я так понял что используются два файла - ваш и который в SDK
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
12.01.2016, 13:46  [ТС] #9
Прописано
Java
1
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
Надо исключить proguard-android.txt?
т.е. так: proguardFiles 'proguard-rules.txt'

Добавлено через 1 минуту
Цитата Сообщение от vxg Посмотреть сообщение
и в случае с главной активити это необходимо иначе система просто не найдет вашу активити так как ее имя будет отличатся от указанного в манифесте
А неужто элементарную вещь не сделали, ведь могли бы прописать новое имя в манифест.
Тогда значит MainActivity исключить надо в правилах?
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,528
12.01.2016, 13:47 #10
Цитата Сообщение от Rube Посмотреть сообщение
Надо исключить proguard-android.txt?
если вы хотите этого - исключите и все должно будет быть в одном файле

Добавлено через 29 секунд
Цитата Сообщение от Rube Посмотреть сообщение
А неужто элементарную вещь не сделали, ведь могли бы прописать новое имя в манифест.
при мне до такого не додумались - сейчас: хз
1
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
12.01.2016, 17:20 #11
Цитата Сообщение от vxg Посмотреть сообщение
We want to keep methods in Activity that could be used in the XML attribute onClick
А кто-то еще пользуется этим? Я еще только начинал с андроидом разбираться все уже говорили "не надо так, ищи по id и назначай нормальный листенер". Да и не прозрачно это как-то.
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,528
13.01.2016, 01:59 #12
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А кто-то еще пользуется этим?
по идее все "крутые" разрабы это делают. я просто всегда забываю как называется онклик и как он пишется поэтому тоже руками уродуюсь
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
13.01.2016, 08:18  [ТС] #13
В общем не стал я ничего трогать, оставил как есть, т.к. если закоментирую keep активити то программа даже не запустится.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2016, 08:18
Привет! Вот еще темы с ответами:

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

Оптимизация по размеру при использовании ProGuard - Программирование Android
Помогите, пожалуйста, разобраться. Я работаю в Eclipse. В файле project.properties я добавил строчку...

Eclipse proguard public class android.support.v7.internal.widget.ActionBarView.HomeView - Программирование Android
Добрый день. Сейчас изучаю разработку под андроид. Споткнулся на следующей ошибке This class should be public...

Большие трудности с Proguard v3.6 - Java
Обфускатор плохо работает с внутренними и анонимными классами (переименовывать - переименовывает, а вот прога потом их не видит), пекеджи...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.01.2016, 08:18
Ответ Создать тему
Опции темы

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