2013-08-15 4 views
20

Я хочу сгенерировать подписанный APK в Android Studio, и он предлагает мне возможность запускать ProGuard. Он просит указать путь к файлу конфигурации, но у меня нет файла конфигурации. Как его создать? Должен ли я использовать ProGuard? Можете ли вы и легко ли распаковать APK-файл, который не использует ProGuard?Должен ли я использовать ProGuard?

EDIT: Благодарим за ответы, но не могу найти файл proguard.cfg в любом месте. файл только свойства я в корневой директории проекта local.properties файл и когда я открываю его в Android Studio Я получил это:

# This file is automatically generated by Android Studio. 
# Do not modify this file -- YOUR CHANGES WILL BE ERASED! 
# 
# This file must *NOT* be checked into Version Control Systems, 
# as it contains information specific to your local configuration. 

# Location of the SDK. This is only used by Gradle. 
# For customization when using a Version Control System, please read the 
# header note. 
sdk.dir=C:/.../... 

ответ

17

Очень просто переделать приложения для Android, поэтому, если вы хотите предотвратить это, да, вы должны использовать ProGuard для своей основной функции: obfuscation.

ProGuard имеет также две другие важные функции: сокращающихся который исключает неиспользуемого кода и, очевидно, весьма полезным, а также оптимизации. Однако оптимизация работает с байт-кодом Java, и поскольку Android работает на байт-коде Dalvik, который преобразован из байт-кода Java, некоторые оптимизации не будут работать так хорошо. Поэтому вы должны быть осторожны.

На веб-сайте Android есть instructions on how to use proguard. Главное, что вам нужно проверить, что у вас есть линия

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

в файле project.properties. Поскольку вы упоминаете, что используете Android Studio, и у вас нет этого файла, но вас спрашивают о файле конфигурации, попробуйте выбрать тот, который находится в Android SDK (tools/proguard/proguard-android.txt).

+0

Благодарим вас за объяснение, но у меня нет файла project.properties ни файла proguard.cfg, о котором они упоминали на веб-сайте Android. У меня есть только файл local.properties. – user2687045

+0

@ user2687045 Я обновил ответ. Однако я не использовал Android Studio, так что это всего лишь предположение. – Malcolm

2

Имея Proguard пробег не является обязательным, но настоятельно рекомендуется.

Вы можете найти все, что вам нужно здесь: http://developer.android.com/tools/help/proguard.html

Также вы можете удалить следующую строку из файла default.properties в вашем проекте корневой папке:

proguard.config = proguard.cfg

+0

В нем говорится: «Когда вы создаете проект Android, файл proguard.cfg автоматически создается в корневой директории проекта.», Но у меня нет файла proguard.cfg и нигде в каталогах проектов. – user2687045

+0

@ user2687045 Также вы можете удалить следующую строку по умолчанию.файл свойств в корневой папке проекта: proguard.config = proguard.cfg – Arseniy

12

Не обязательно использовать ProGuard, и используете ли вы это или нет, довольно просто распаковать apk и получить доступ к вашим ресурсам (графика и другие активы). Если вы не используете ProGuard, код приложения также может быть легко реконструирован, ProGuard становится очень трудным и громоздким, чтобы попытаться понять, что происходит там (хотя это и невозможно, учитывая достаточное количество времени и усилий).

Будьте осторожны, чтобы тщательно протестировать ваше приложение после обфускации, так как это изменение в приложении, а иногда и непредвиденные вещи могут произойти, особенно если oyu используют отражение много.

6

Одним из важных случаев для осуществления обфускации ProGuard является то, что некоторые плохие парни распаковывают apk и вводят/заменяют модуль покупки на их. Мы не можем ожидать, что все пользователи загрузят apk только из Play Маркета, и пользователи могут украсть свою учетную запись.

+0

Ничего себе, никогда не думал о безопасности пользователей в отношении proguard. Определенно еще одна причина для его использования. Благодарю. – HopefullyHelpful

Смежные вопросы