سؤال

أحاول الحصول على التطبيق يعمل بعد التشويش.لدي فصلين بسيطين:

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 غريبة جدا:يحتفظ بأسماء الفئات (وحقولها وأساليبها) ، إذا كانت الفئات تحتوي على الكل الحقول والأساليب المحددة.ومن المفيد في الغالب للحفاظ على الطبقات جني والأساليب.

يمكنك الاحتفاظ بالحقول والأساليب المشروحة:

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

لسوء الحظ ، عليك بعد ذلك التأكد من أن جميع الحقول والأساليب المعنية مشروحة.

قد يكون من الأسهل الاحتفاظ بجميع الحقول وطرق الفئات المتسلسلة مثل هذه:

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

يمكنك استخدام أحرف البدل أو التعليقات التوضيحية أيضا لتحديدها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top