Android-Как проверить Proguard obfuscation работает?

Я запутал свой apk, но размер файла был уменьшен только с 12 МБ до 10,5 МБ.

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

на всякий случай, это мой программы ProGuard-проекта.txt-файл...

# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-dontwarn twitter4j.**

...и библиотеки я использую android-support-v4.jar, acra-4.5.0.jar и twitter4j-core-4.0.2.jar.

3 ответов


в каталоге проекта вы найдете Proguard папка, в которой вы увидите четыре текстовых файла:

свалка.txt

описывает внутреннюю структуру всех файлов классов в .файл apk

сопоставление.txt

перечисляет сопоставление между исходным и запутанным именами классов, методов и полей. Этот файл важен, когда вы получаете сообщение об ошибке от релиз build, потому что он переводит запутанную трассировку стека обратно в исходные имена классов, методов и членов. См. Раздел Декодирование Запутанных Трассировок Стека за дополнительной информацией.

семена.txt

перечисляет классы и члены, которые не запутываются

использование.txt

перечисляет код, который был удален из.apk

источник: Должны быть

надеюсь, что это помогает!


вот, вероятно, более визуальный способ проверить. В более новой версии Android Studio он поставляется с анализатором APK, который позволяет пользователю исследовать, что находится в файле APK, и удобно проверить, был ли ваш класс запутан.

ниже изображение показывает, что как имя пакета, так и имя метода были запутаны

You can see the package name and method name is obfuscated


любым способом я могу проверить уровень обфускации, который был выполнен?

возможно, вы сможете использовать флаг -optimizationpasses N.

указывает количество проходов оптимизации, которые необходимо выполнить. По умолчанию, выполняется один проход. Несколько проходов могут привести к дальнейшим улучшениям. Если после прохождения оптимизации улучшения не найдены, оптимизация завершается. Применимо только при оптимизации.