В чем разница между proguard-android.txt и proguard-rules.pro? - Андроид

В моем buildType я вижу это:

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
}

У меня есть несколько вопросов:

  1. Почему два файла?
  2. В чем разница между ними?
  3. Где я должен написать свои правила?

person MBH    schedule 01.01.2016    source источник


Ответы (2)


Метод getDefaultProguardFile('proguard-android.txt') получает настройки ProGuard по умолчанию из папки Android SDK tools/proguard/. Файл proguard-android-optimize.txt также доступен в этой папке Android SDK с теми же правилами, но с включенной оптимизацией. Оптимизация ProGuard выполняет анализ на уровне байт-кода, внутри и между методами, чтобы помочь уменьшить размер вашего приложения и ускорить его работу. Android Studio добавляет файл proguard-rules.pro в корень модуля, поэтому вы также можете легко добавлять собственные правила ProGuard, относящиеся к текущему модулю.

См. это: https://developer.android.com/studio/build/shrink-code

Это означает, что вы должны добавить свой пользовательский файл proguard в proguard-rules.pro, если вы хотите разделить некоторые правила на множество файлов, вы можете сделать это и объявить их после этого:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
person starkshang    schedule 01.01.2016
comment
Если вы откроете файл proguard-android.txt, вы найдете следующую информацию: This file is no longer maintained and is not used by new (2.2+) versions of the # Android plugin for Gradle. Instead, the Android plugin for Gradle generates the # default rules at build time and stores them in the build directory. - person Bevor; 08.02.2019

getDefaultProguardFile('proguard-android.txt') извлечет настройки ProGuard, сохраненные в Android SDK в tools/proguard.

proguard-rules.pro — это файл, который находится в корне модуля. Цель состоит в том, чтобы позволить вам добавлять пользовательские правила (ProGuard), специфичные для модуля.

Для получения дополнительной информации

person myselfmiqdad    schedule 01.01.2016