我正在编写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 { *; }
然后在我的模块gradle文件中加载该配置:
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;
}
}
因此,即使保留了字段名,但在我的构造函数中也没有保留变量名。
如何保留方法/构造函数参数名称?
我想念什么?
答案 0 :(得分:0)
如here所述,请检查R8版本1.5.51是否对您一切正常
buildscript {
repositories {
maven {
url 'http://storage.googleapis.com/r8-releases/raw'
}
}
dependencies {
// Must be before the Gradle Plugin for Android
classpath 'com.android.tools:r8:1.5.51'
classpath 'com.android.tools.build:gradle:X.Y.Z'
}
}
或者您可以按照here
禁用R8您可以通过在项目的gradle.properties文件中添加以下行之一来禁用R8:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false