gpt4 book ai didi

android - RestTemplate、Jackson 和混淆器

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:02 27 4
gpt4 key购买 nike

我试图让应用程序在混淆后正常工作。我有两个简单的类:

public class ApiUrlResponseData
{

@JsonProperty( "@links" )
List<Link> links;

public List<Link> getLinks()
{
return links;
}
}

public class Link
{
@JsonProperty( "url" )
String url;

@JsonProperty( "name" )
String name;

@JsonProperty( "mobile" )
Boolean mobile;

public Link()
{
}

public Link( String url, String name, Boolean mobile )
{
this.url = url;
this.name = name;
this.mobile = mobile;
}

public String getUrl()
{
return url;
}

public String getName()
{
return name;
}

public Boolean isMobile()
{
return mobile;
}
}

不幸的是,在混淆和请求执行 ApiUrlResponseData.getLinks() 后返回 null

以下是我试图防止混淆数据对象的方法:

 -keepclasseswithmembernames class com.companyname.android.network.data.** {
public <fields>;
protected <fields>;
<fields>;

@org.codehaus.jackson.annotate.* <fields>;
@org.codehaus.jackson.annotate.* <init>(...);
}

我错过了什么?

最佳答案

选项 -keepclasseswithmembernames 非常奇特:如果类具有所有指定的字段和方法,它会保留类的名称(及其字段和方法) .它主要用于保留 JNI 类和方法。

您可以保留带注释的字段和方法:

-keepclassmembers class * {
@org.codehaus.jackson.annotate.* *;
}

不幸的是,您随后必须确保对所有涉及的字段和方法进行注释。

像这样保留序列化类的所有字段和方法可能更容易:

-keepclassmembers class com.example.ApiUrlResponseData,
com.example.Link {
*;
}

您可以使用通配符或注释来指定它们。

关于android - RestTemplate、Jackson 和混淆器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24057167/

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