2013-08-17 35 views
28

Tôi đang sử dụng Thư viện hỗ trợ v7 để hiển thị số ActionBar trên Android 2.x. Nó hoạt động tốt nhưng tôi đã phải sửa chữa một vài lớp/phương pháp không tìm thấy lỗi sau khi kích hoạt Proguard.Cấu hình Proguard của Android cho Thư viện hỗ trợ v7 ActionBar

Có bất kỳ hướng dẫn nào về các lớp học cần được bảo tồn không?

Cho đến nay tôi có những:

-keep public class android.support.v7.internal.widget.ActionBarContainer 
-keep class android.support.v7.internal.widget.ActionBarView$HomeView 
-keep public class android.support.v7.internal.widget.ActionBarContextView 

Có vẻ như để làm việc bây giờ nhưng tôi không phải là tự tin rằng nó sẽ không sụp đổ tại một số sân khấu vì một số lớp được cho là nội bộ khác tham chiếu trong một số tập tin XML .

Trả lời

4

tôi sử dụng này, phần nào tương tự như những gì các phiên bản v4 gợi ý:

-keep class android.support.v7.internal.** { *; } 
-keep interface android.support.v7.internal.** { *; } 
+1

đâu bạn thấy rằng gợi ý cho v4? –

+0

Vâng, tôi không thể nhớ lại. Nếu bạn Google cho nó, bạn sẽ tìm thấy khá một vài tài liệu tham khảo, bao gồm cả ở đây trên SO. Có lẽ nó không được đề xuất chính thức ở đâu cả, tôi không biết, nhưng nó khá hợp lý và nó cũng hoạt động. :-) –

+0

Thêm hai dòng này mà không có "nội bộ" (ví dụ: android.support.v7. **) đã giải quyết được sự cố của tôi. Tương tự như vậy tôi đã thêm những dòng này cho v4. –

51

Tôi giải quyết nó với:

-dontwarn android.support.v7.** 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 
+0

Bạn lấy nó từ đâu? google có điều này ở đâu không? Liệu "**" có nghĩa là tất cả các tệp và thư mục con, đệ quy không? Phần bên trong "{}" (xin lỗi tôi không nhớ) là gì? –

+1

Họ không sử dụng? Lạ nhỉ. –

+6

Điều này không được khuyến nghị. Nó sẽ giữ tất cả các lớp thư viện, ngay cả những lớp bạn không cần. Xem http://developer.android.com/tools/support-library/setup.html – HyBRiD

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