Где я могу найти свой BuildConfig в APK анализаторе после минимизации кода с помощью ProGuard? - PullRequest
6 голосов
/ 27 мая 2019

Обратите внимание на следующие два изображения из Analyze APK на Android Studio.

  • Первый с minifyEnabled = false,
  • другой с minifyEnabled = true (после декодирования с mapping.txt, конечно)

enter image description hereminifyEnabled = false.BuildConfig есть.

enter image description hereminifyEnabled = true (расшифровано с помощью mapping.txt).BuildConfig там нет.

Я могу найти BuildConfig в classes.dex до минимизации, но не после минимизации.Я не могу найти какой-либо документ / обсуждение по этому поводу, но есть ли какое-то правило для удаления BuildConfig из classes.dex после минимизации с помощью ProGuard ?В этом случае означает ли это, что относительно безопасно поместить конфиденциальную информацию в BuildConfig?Или, возможно, он просто спрятан в каком-то другом месте?

Моя версия ProGuard - 4.7, если это имеет значение.

Ответы [ 2 ]

10 голосов
/ 30 мая 2019

Дополнительной особенностью шага минимизации является встраивание констант. Это объясняет, почему BuildConfig исчезает, и, тем не менее, значения все еще существуют там, где это необходимо. Как только значения встроены, больше нет ссылок на класс BuildConfig, и минификатор может полностью его удалить.

0 голосов
/ 27 мая 2019

Если вы используете некоторые переменные в BuildConfig, то proguard не удалит их. в соответствии с их руководством :

Шаг сжатия обнаруживает и удаляет неиспользуемые классы, поля, методы и атрибуты. Этап оптимизации анализирует и оптимизирует байт-код методов. Шаг запутывания переименовывает остальные классы, поля и методы, используя короткие бессмысленные имена.

Кроме того, я использовал эти опции, и я никогда не сталкивался с тем, как proguard убирает мою информацию на BuildConfig.

shrinkResources true
minifyEnabled true
...