2012-11-30 29 views
19

Bạn biết đấy, tất cả các lớp con của Phân đoạn phải bao gồm một hàm dựng rỗng công khai nhưng khi sử dụng trình bảo vệ, các hàm tạo này sẽ bị loại bỏ. Tôi đã chỉ định các lệnh dưới đây nhưng hàm tạo rỗng vẫn được loại bỏ. Bất cứ ai có thể giúp tôi để giữ cho constructor rỗng của Fragment? Cảm ơn bạn.Ngăn chặn Proguard xóa bỏ hàm tạo rỗng của đoạn

-keepclassmembers public class * extends android.support.v4.app.Fragment { 
    public <init>(***); 
    #public <init>(); //already tried this 
} 

-keepclassmembers public class * extends com.vng.zingtv.fragment.MyBaseFragment { 
    public <init>(***); 
    #public <init>(); //already tried this 
} 

Trả lời

27

này nên làm việc:

-keepclassmembers public class * extends android.support.v4.app.Fragment { 
    public <init>(...); 

Tôi tin rằng ngay cả điều này là đủ:

-keep public class * extends android.support.v4.app.Fragment 

như giữ các lớp học sẽ bắt buộc Proguard để giữ constructor mặc định.

+0

Tôi không sử dụng tùy chọn thứ 2 vì tôi không muốn giữ tất cả các lớp con Phân đoạn. Với tùy chọn thứ nhất, tôi vẫn không thấy hàm khởi tạo rỗng khi dịch ngược lại. Aw, cảm ơn bạn đã trả lời. – Wayne

+0

Bạn không nên lo lắng về việc nhìn thấy các nhà xây dựng hay không. Nếu bạn chỉ cung cấp một hàm tạo rỗng mặc định, điều này có thể được gỡ bỏ: nó sẽ được trình biên dịch java thêm vào. Sẽ không có rắc rối khi SDK sẽ tạo đoạn của bạn. Bạn có gặp bất kỳ sự cố nào về thời gian chạy không? – Snicolas

+2

Cài đặt thứ hai là đủ; nó sẽ giữ tất cả các phần mở rộng và, tự động, các hàm tạo parameterless của chúng (giả sử chúng có mặt trong các lớp gốc). –

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