gpt4 book ai didi

android - 如何使用 Android R8 保留类构造函数参数参数名称

转载 作者:行者123 更新时间:2023-12-02 10:25:13 27 4
gpt4 key购买 nike

我正在编写 Android 库,因此我想保留某些构造函数/方法的参数名称。我正在将我的库部署为 AAR 文件。

Gradle 从 3.3.2 升级到 3.4.0 后,构造函数和公共(public)方法中的所有参数都被重命名为类似“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;
}
}

因此,在我的构造函数中,甚至保留了字段名称,但没有保留变量名称。

如何保留方法/构造函数参数名称?

我错过了什么?

最佳答案

如前所述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'
}
}

或者您可以按照描述禁用 R8 here

You can disable R8 by adding one of the following lines to your project’s gradle.properties file:

# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false

关于android - 如何使用 Android R8 保留类构造函数参数参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56057586/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com