Я пишу библиотеку Android, поэтому хочу сохранить имена параметров для некоторых конструкторов / методов. Я развертываю свою библиотеку как файл AAR.
После обновления Gradle с 3.3.2 до 3.4.0 все аргументы в конструкторах и открытых методах переименовываются во что-то вроде «var1», до этого все было хорошо.
Как я понимаю, главное отличие состоит в том, что теперь по умолчанию R8 используется для минимизации и маскировки нашего кода вместо Proguard. Так что, вероятно, я что-то упустил в конфигурации.
Допустим, у меня есть класс:
public class Foo {
public String bar;
public Foo(String bar) {
this.bar = bar;
}
}
Итак, в proguard-rules.pro у меня есть:
-keepparameternames
-keepattributes MethodParameters
-keepattributes Signature
-keep class my.class.path.Foo { *; }
И я загружаю эту конфигурацию в файл модуля моего модуля:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}}
Прямо сейчас мой класс внутри моего файла AAR выглядит так ->
public class Foo {
public String bar;
public SecureElement(String var1) {
this.bar = var1;
}
}
Таким образом, даже имя поля было сохранено, но не имя переменной в моем конструкторе.
Как сохранить имена аргументов метода / конструктора?
Чего мне не хватает?