如何在亲卫队的规则中保留私人成员?

问题描述 投票:1回答:1

我试图使用Proguard来保持我的私人领域,但它不会工作.我从Proguard keep classmembers中偷了大部分,因为这个问题与我问的类似,也遵循了这个链接。如何告诉ProGuard保留私人字段而不指定每个字段?

但还是不行。

我想给另一家公司做一个库,仍然保留我的访问级别修改器字段和方法。

Proguard。

-keepclassmembers class com.example.mylibrary.Bedika {
 private <fields>;
}
-keep class com.example.mylibrary.Bedika {
 *;
}

我的AAR库

public class Bedika {

private String stam;

public Bedika(String stam) {
 this.stam = stam;
}

public void print() {
 System.out.println(stam);
}
}

Proguard之后的输出。

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.example.mylibrary;

public class Bedika {
public String stam;

public Bedika(String var1) {
 this.stam = var1;
}

public void print() {
 System.out.println(this.stam);
}
}
java android proguard
1个回答
1
投票

好像是R8引起的,而不是...... Proguard.

进入 gradle.properties,并设置 android.enableR8=false. 下次构建时,它将使用 Proguard.

R8是谷歌对Proguard的回答,在最近的The Android Gradle Plugin(3.4.0+)版本中,它默认使用R8的代码shrinkerobfuscator。使用Google的版本而不是Guardsquare的技术有一些利弊。

更多信息,请看 文件

© www.soinside.com 2019 - 2024. All rights reserved.