标签:android obfuscation proguard jackson resttemplate
我试图在混淆后让app工作.我有两个简单的类:
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,obfuscation,proguard,jackson,resttemplate 来源: https://codeday.me/bug/20190528/1173748.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。