2014-04-29 17 views
22

Đây là lớp học của tôi:Làm thế nào để nói với ProGuard để giữ lĩnh vực tư nhân mà không chỉ định từng lĩnh vực

package com.tools.app.holiday; 

public class Holiday { 

    private String name; 

    private Calendar dateFrom = Calendar.getInstance(); 

    private Calendar dateTo = Calendar.getInstance(); 

    ... 

tôi có thể giữ những lĩnh vực tư nhân bằng cách đặt sau trong quy tắc ProGuard tập tin của tôi:

-keepclassmembers class com.tools.app.holiday.Holiday { 
    private java.lang.String name;  
    private java.util.Calendar dateFrom; 
    private java.util.Calendar dateTo; 
} 

Nhưng tôi không muốn chỉ định từng trường riêng lẻ. Tôi có thể làm cái này như thế nào?

P.S. Tôi đã đánh cắp hầu hết điều này từ Proguard keep classmembers vì câu hỏi đó gần với những gì tôi đang hỏi.

Trả lời

38

Theo ProGuard documenation ký tự đại diện <fields> khớp với bất kỳ trường nào. Vì vậy nó phải được cái gì đó như:

-keepclassmembers class com.tools.app.holiday.Holiday { 
    private <fields>;  
} 

Nếu bạn muốn duy trì các lĩnh vực tư nhân ở tất cả các lớp học sử dụng:

-keepclassmembers class * { 
    private <fields>;  
} 
+0

Làm thế nào về '-keepclasseswithmembers lớp * {@ com.activeandroid.annotation.Column ; } ' –

Các vấn đề liên quan