Proguard не запутывает приложения для Android - PullRequest
5 голосов
/ 15 марта 2012

По этой ссылке: http://developer.android.com/guide/developing/tools/proguard.html, они заявляют:

ProGuard усложняет реинжиниринг вашего приложения, важно использовать его, когда ваше приложение использует функции, чувствительные к безопасности, например, когда вы лицензируете свои приложения.

Но это не правда! Я использую новейшую версию Proguard (4.7), включенную в предварительный просмотр ADT 17 4. Я использую proguard при экспорте приложения, добавив

proguard.config=proguard-android.txt

В мои project.properties (proguard-android.txt - это просто настройка по умолчанию, включенная в ADT 17).

Но я могу легко перепроектировать мой apk, вернув его в исходный код, используя следующие шаги:

  1. Используйте apk-tool для извлечения apk.

  2. Используйте smali для преобразования файлов .smali в .dex (вы указываете smali в папку , содержащую файлы .smali, обычно внутри / src / com / [НазваниеКомпании] / [имя_приложения])

  3. Используйте dex2jar для преобразования полученного файла .dex в .jar

  4. Используйте jd-gui для просмотра полученного файла .jar

Итак, мой вопрос: я что-то не так делаю? Или proguard просто бесполезен при запутывании кода?

1 Ответ

1 голос
/ 27 марта 2012

Если вы используете библиотеки совместимости android.support. *, Это может быть причиной проблемы.Добавьте следующие строки в ваш конфигурационный файл proguard:

-dontwarn android.support.**
-keep class android.support.** { *; }

Самый простой способ диагностировать проблемы proguard - это создать приложение с помощью apache ant.Вы увидите все предупреждения и ошибки в stderr.

Это применимо ко всем библиотекам, которые используют динамическую загрузку классов, отражение и множественные реализации одного и того же класса в зависимости от версии API.

...