Де в Android Studio створюються файли відображення ProGuard після компіляції підписаного APK?
Я не впевнений, чи він не працює чи я просто забув шлях до файлу, і мій обов’язковий пошук Google / Stack Overflow не відповів на це
Де в Android Studio створюються файли відображення ProGuard після компіляції підписаного APK?
Я не впевнений, чи він не працює чи я просто забув шлях до файлу, і мій обов’язковий пошук Google / Stack Overflow не відповів на це
Відповіді:
Він повинен розташовуватися за адресою build/outputs/proguard/release/mapping.txt
каталозі модуля додатка.
В останній версії ProGuard та Android Studio файл знаходиться за адресою build/outputs/mapping/release/mapping.txt
.
/app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt
/app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txt
нові шляхи.
Для мене вони є 'build/outputs/mapping/release'
Я вважав більш чистим налаштувати proguard для запису файлу mapping.txt до місця поза build/
деревом каталогів, щоб його було зручніше перевірити в контролі версій.
Щоб досягти цього, покладіть це у свій proguard-rules.pro
файл:
-printmapping mapping.txt
Це (швидше за все) помістить його в той самий каталог, що і ваш proguard-rules.pro
файл. Зрештою, ви, ймовірно, хочете записати його в ту саму директорію, що і ваш файл APK, та з еквівалентною назвою (яка може включати аромат, тип збірки тощо).
Примітка: на мій досвід, це не перекрито файлом шаблону proguard (який запропонував коментатор до іншої відповіді тут).
ОНОВЛЕННЯ: Якщо у вас кілька ароматів продуктів, то це набагато краще рішення: https://stackoverflow.com/a/31116608/444761
На це запитання відповісти досить пізно, але про всяк випадок, коли комусь потрібна моя відповідь.
Розташування картографічного файлу для деобфукації:
ProGuard зберігає файл у додатку програми / build / outputs / mapping / FLAVOR / release / mapping.txt
Як правило, в режимі налагодження вам не потрібен файл зіставлення, оскільки там загалом притуплення вимкнено. Якщо це не так, то переконайтеся, що у файлі build.gradle у вас нижче код для варіанту налагодження.
debug {
minifyEnabled false
debuggable true
}
Деякі Gotchas:
Файл mapping.txt перезаписується щоразу, коли ви створюєте збірку версій за допомогою ProGuard, тому спочатку створіть резервну копію цього файлу перед створенням нового випуску. Це допоможе розкрити стеження стека у старій версії програми.
Крім цього, існує два способи приховання коду:
1. Завантажте файл mapping.txt на консоль Google Play:
Опублікувавши додаток у Google Play, ви можете завантажити файл mapping.txt для кожної версії APK. Тоді Google Play видалить сліди вхідних стеків від повідомлень про користувачі, щоб ви могли їх переглянути в консолі Google Play.
2. Використовуйте локальний інструмент sdk retrace.sh/retrace.bat:
Деколи ви хочете запустити версію версії свого додатка (змінивши варіант збірки, щоб випустити та запустити його), щоб перехрестити перевірку та виправити помилки, щоб вони не траплялися у виробництві (коли випускається в Play-Store).
Щоб самостійно перетворити неясний стек- стежка у читабельний, скористайтеся скриптом повторного виклику ( retrace.bat в Windows; retrace.sh на Mac / Linux ).
Він розташований у с <sdk-root>/tools/proguard/bin/
довіднику.
<sdk-root>
це місце, де були встановлені всі ваші бібліотеки та SDK для Android.
Сценарій приймає файл mapping.txt і ваш стек стеження, створюючи новий, читабельний слід стека.
Синтаксис команд:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
Наприклад:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
Я віддаю перевагу локальній версії обманювання, оскільки це досить зручно для попередньої перевірки виробничих помилок.
Я сподіваюся, що це допомагає.
Я використовую версію Android Studio 2.2.2 . Для мене він розташований у таких місцях:
Для налагодження:
\app\build\outputs\mapping\debug\mapping.txt
Для випуску:
\app\build\outputs\mapping\release\mapping.txt