Вопрос по android – Запутанный код

9

Меня попросили написать простое приложение для Android. На самом деле, первый, за который мне заплатят, поэтому я действительно не хочу облажаться :). Одним из требований было то, что код должен быть запутан.

Я узнал общую идею запутывания, но не хочу делать глупых ошибок.

Что именно я должен сделать, чтобы сделать код запутанным? Выполняет ли экспорт его как релиз, или требуются какие-то другие шаги? Любые замечания также приветствуются.

PS. Я использую Eclipse, если это имеет значение.

EDIT

Из статьи предложено в anwsers:

To enable ProGuard so that it runs as part of an Ant or Eclipse build, set the proguard.config property in the /project.properties file. The path can be an absolute path or a path relative to the project's root.

If you left the proguard.cfg file in its default location (the project's root directory), you can specify its location like this:

proguard.config=proguard.cfg

У меня действительно естьproject.properties файл в директории моего проекта. Но у меня нетproguard.cfg файл. Вместо этого у меня естьproguard-project.txt файл. Я думаю, это замена.

project.properties:

This file is automatically generated by Android Tools. Do not modify this file -- YOUR CHANGES WILL BE ERASED!

This file must be checked in Version Control Systems.

To customize properties used by the Ant build system edit "ant.properties", and override values to adapt the script to your project structure.

To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):

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

Project target. target=android-7

Первоначально все, кроме последней строки, закомментировано.

Вproguard-project.txt все закомментировано.

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

Ваш Ответ

2   ответа
2
Error: User Rate Limit Exceeded Andrzej Gis
22

s r17, они изменили способ работы конфигурации ProGuard. В основном они разделяют то, что раньшеproguard.cfg в два файла (а также просто сделал их. TXT-файлы):proguard-android.txt а такжеproguard-project.txt. proguard-android.txt проживает в вашем{SDK dir}\tools\proguard каталог иproguard-project.txt находится в каждом из ваших каталогов проекта.

Они разбили файл так, что общие настройки / флаги, которые команда Android считает довольно стандартными, будут вproguard-android.txt файл и может быть обновлен (в основном без вывода сообщений) с каждой версией SDK Tools. И затем любые специфические флаги разработчика / проекта, разработчик может добавить вproguard-project.txt файл.

Вот почему вы заметили все в вашемproguard-project.txt файл был закомментирован, потому что, как правило, большинство людей не имеют каких-либо конкретных потребностей проекта,they just want to run ProGuard with standard settings and be done with it.

Для справки (очень хорошее объяснение):http://tools.android.com/recent/proguardimprovements

Step-by-Step (day by day :P)

(Использование Eclipse IDE) Чтобы включить ProGuard и его сжатие и запутывание с использованием толькоdefault настройки:

First update your SDK Tools to newest (r19 at time of writing) In project.properties uncomment the line that says:

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

Если вы создали проект до r17, вы можете не увидеть то же самое. Если это так, я предлагаю вам создать новый фиктивный проект (после обновления SDK Tools) и просто скопировать поверхproguard-project.txt а такжеproject.properties файлы.

Вот и все! ProGuard теперь будет включен и будет работать, ноonly на сборках релиза (когда вы используете Android Tools и экспортируете подписанный / неподписанный apk).

Когда вы сделаете сборку релиза, вы заметите, что в папке вашего проекта будет создана новая папка ProGuard. В этой папке вы найдете четыре файла с такими вещами, как классы / методы, которые были сохранены или удалены. Также обратите внимание, что когда вы запутываете, вы также запутываете свои трассировки стека в случае ошибок.

Edit: (9/4/12) Просто хотел обновить этот ответ, чтобы отразить изменения в Tools r20.

Команда Android добавила еще один файл конфигурации Proguard. этоproguard-android-optimize.txt и он также находится в{SDK dir}\tools\proguard каталог. Этот файл такой же, как оригиналproguard-android.txt конфигурационный файл,except он имеет оптимизацию proguardturned on.

Этот дополнительный файл был добавлен для удобства тех, кто хотел включить оптимизацию (возможно, для того, чтобы они могли делать такие вещи, как удаление вызовов журнала, что требует включения оптимизации). Теперь вы можете просто указать этот файл вместоproject.properties файл вроде так:

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

Как и прежде, не пытайтесь изменитьproguard-android... конфигурационные файлы. Любые специфические флаги проекта должны идти вproguard-project.txt файл в папке вашего проекта.

Error: User Rate Limit ExceededAfterProgardScreenCapture
Error: User Rate Limit ExceededLists the classes and members that are not obfuscatedError: User Rate Limit Exceeded

Похожие вопросы