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

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

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

ProGuard ошибки - Android

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

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

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

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

Добавлено через 29 секунд
Цитата Сообщение от Rube Посмотреть сообщение
А неужто элементарную вещь не сделали, ведь могли бы прописать новое имя в манифест.
при мне до такого не додумались - сейчас: хз
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
12.01.2016, 17:20     ProGuard ошибки #11
Цитата Сообщение от vxg Посмотреть сообщение
We want to keep methods in Activity that could be used in the XML attribute onClick
А кто-то еще пользуется этим? Я еще только начинал с андроидом разбираться все уже говорили "не надо так, ищи по id и назначай нормальный листенер". Да и не прозрачно это как-то.
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,918
13.01.2016, 01:59     ProGuard ошибки #12
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А кто-то еще пользуется этим?
по идее все "крутые" разрабы это делают. я просто всегда забываю как называется онклик и как он пишется поэтому тоже руками уродуюсь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2016, 08:18     ProGuard ошибки
Еще ссылки по теме:

Android Ошибки в logcat
Свое правило для Proguard Android
Ошибки в Apktool Android
Android Оптимизация по размеру при использовании ProGuard
Android ProGuard сопротивление компилированию(

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

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
13.01.2016, 08:18  [ТС]     ProGuard ошибки #13
В общем не стал я ничего трогать, оставил как есть, т.к. если закоментирую keep активити то программа даже не запустится.
Yandex
Объявления
13.01.2016, 08:18     ProGuard ошибки
Ответ Создать тему
Опции темы

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