как в eclipse отладить запутанный файл Proguard apk - PullRequest
8 голосов
/ 12 сентября 2011

В моем приложении произошел сбой после использования Proguard, подписания и экспорта с новым ключом.
Этот же код работает в обычном режиме отладки затмения.

Я читаю везде, я должен использовать mapping.txt, чтобы найти код, который не удалось. Но как это сделать, у меня есть Google это в течение 2 часов, и никакой ответ не работает.

Сейчас я подписываю файл apk с помощью debug.keystore и использую пароль по умолчанию «android».
Кто-то говорит, что я должен android: debuggable = "false" в моем теге приложения, чтобы сделать Proguard запутывает мою сессию отладки в затмении.

Это правильно?
Любая помощь будет благодарна

на странице Proguard Android Developer Я не могу найти способ сделать это

"Когда ваш запутанный код выводит трассировку стека, имена методов запутываются, что делает отладку ха"

Что такое "трассировка стека" и откуда?

На странице Руководство Proguard Не могу найти объяснение

Ответы [ 5 ]

8 голосов
/ 26 октября 2014

С помощью графического интерфейса Proguard проще всего удалить следы стека.Вы найдете это в вашем Android SDK.

sdk\tools\proguard\bin\proguardgui.bat
  1. Запустите приведенный выше графический интерфейс из приведенного выше пути.
  2. Нажмите кнопку «ReTrace» в нижней части панели наслева.
  3. Добавьте путь к файлу сопоставления (mapping.txt) в текстовом поле «Файл сопоставления».
  4. Вставьте копию трассировки стека в «Запутанную трассировку стека».текстовое поле.
  5. Нажмите «Восстановить» в правом нижнем углу.
  6. Счастливая отладка!

enter image description here

4 голосов
/ 16 ноября 2012

Не в Затмении.

Вне Eclipse, используйте функцию Retrace в ProGuard. Вам также понадобятся выгруженная трассировка стека и mapping.txt, найденные в каталоге proguard вашего проекта, чтобы полностью изменить запутанную трассировку стека. Не забывайте сохранять копию mapping.txt (желательно вне рабочей области вашего проекта) каждый раз, когда вы развертываете новую версию своего приложения для Android.

4 голосов
/ 26 января 2012

Рассматривая это, документация для proguard на сайте разработчика Android демонстрирует, как декодировать трассировку стека, но не указывает, как получить трассировку стека.

http://developer.android.com/guide/developing/tools/proguard.html (see section Декодирование запутанных следов стека)

Я попытался использовать дамп logcat следующим образом: -

E/AndroidRuntime(14584): FATAL EXCEPTION: main

E/AndroidRuntime(14584): java.lang.ExceptionInInitializerError

E/AndroidRuntime(14584):    at com.a.a.b.a.dg.<init>(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.a.q.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.a.y.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.a.y.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.a.aq.get(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.cp.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.ai.c(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.bg.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.a.o.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.ee.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.ag.a(Unknown Source)

E/AndroidRuntime(14584):    at com.a.a.b.cb.a(Unknown Source)

К сожалению, это не работает, но работает, если я удаляю E / AndroidRuntime(14584) с начала каждой строки, в которой он работает:

FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError
    at com.a.a.b.a.dg.<init>(Unknown Source)
    at com.a.a.b.a.q.a(Unknown Source)
    at com.a.a.b.a.y.a(Unknown Source)
    at com.a.a.b.a.y.a(Unknown Source)
    at com.a.a.b.a.aq.get(Unknown Source)
    at com.a.a.b.cp.a(Unknown Source)
    at com.a.a.b.ai.c(Unknown Source)
    at com.a.a.b.bg.a(Unknown Source)
    at com.a.a.a.o.a(Unknown Source)
    at com.a.a.b.ee.a(Unknown Source)
    at com.a.a.b.ag.a(Unknown Source)
    at com.a.a.b.cb.a(Unknown Source)

Так что, как указано в документации, вам нужен файл трассировки стека, и, похоже, нет никаких признаков получения действительного файла трассировки стека изdevice.

Единственный способ, которым я видел это, - это предоставить собственный обработчик исключений и записать трассировку стека в sdcard.

1 голос
/ 15 марта 2018

Для пользователей Mac используйте приведенный ниже код для запуска /Users/XYZ/Library/Android/sdk/tools/proguard/bin/proguardgui.sh

  1. Запустите приведенный выше графический интерфейс из приведенного выше пути.
  2. Нажмите кнопку «Восстановить» в нижней части панели слева.
  3. Добавьте путь к вашему файлу Mapping (mapping.txt) в 'Mapping файл 'текстовое поле.
  4. Вставьте копию вашей трассировки стека в 'Запутанную трассировку стека' текстовое окно. Нажмите
  5. «ReTrace» в правом нижнем углу.

Счастливая отладка!

0 голосов
/ 17 апреля 2012

Шаги, чтобы запутаться apk:

  1. Загрузить последнюю версию proguard с сайта proguard . Текущая последняя версия proguard4.7

  2. Заменить папку "bin" и "lib" в C:\Program Files (x86)\Android\android-sdk\tools\proguard на последние загруженные папки proguard.

  3. Проверьте местоположение SDK в затмении на наличие пробелов в нем и перейдите в «Окно»> «Установки»> «Android». Если есть свободное место, замените его на:

    c:\Progra~2\android\android-sdk (for windows 64-bit)
    c:\Progra~1\android\android-sdk (for windows 32-bit)
    
  4. Убедитесь, что файл proguard.cfg находится в корневой папке вашего проекта и добавьте proguard.config=proguard.cfg в файл project.properties проекта Android.

  5. Теперь экспортируйте ваш проект, чтобы получить запутанный apk.

...