2015-02-24 12 views
16

Tôi đã cấu hình:cảnh báo Proguard: cấu hình giữ điểm vào .... nhưng không phải là mô tả lớp

-keep ,allowoptimization,allowobfuscation,allowshrinking public class  org.jf.dexlib2.dexbacked.** { 
    *; 
} 

nhưng vẫn nhận được cảnh báo:

Note: the configuration keeps the entry point 'com.trusteer.trf.dex_parser { int get_strings_count(org.jf.dexlib2.dexbacked.DexBackedDexFile); }', but not the descriptor class 'org.jf.dexlib2.dexbacked.DexBackedDexFile' 

Tôi đang sử dụng Proguard phiên bản 4.7 (trong SDK Android)

Tôi nên làm gì?

+7

'-keep, includeescriptorclasses' –

+0

Giải pháp của Muhammad đã làm việc cho tôi. –

Trả lời

0

Từ docuemnts:

allowshrinking Chỉ định rằng điểm vào quy định tại các tùy chọn -keep có thể được thu nhỏ, ngay cả khi họ phải được bảo quản bằng cách khác. Đó là, các điểm nhập cảnh có thể được gỡ bỏ trong bước thu hẹp lại, nhưng nếu họ là cần thiết sau khi tất cả, họ có thể không được tối ưu hóa hoặc obfuscated

Vì vậy, có vẻ như bạn cần phải loại bỏ các modifier allowshrinking.

+0

Tôi đã thử điều đó. không giúp đỡ: ( – user3398598

+0

Bạn có nhận được thông báo lỗi mới không? Bạn đã thử phiên bản ProGuard khác chưa? – Vaiden

0

Tôi đã thực hiện một số thao tác trong số docs. Bạn chưa cung cấp toàn bộ tệp cấu hình của mình, nhưng tôi đoán rằng com.trusteer.trf.dex_parser được đặt để vừa giữ và không làm xáo trộn.

Điều này có nghĩa là có một sự điều chỉnh từ com.trusteer.trf.dex_parser đến một lớp được gọi là org.jf.dexlib2.dexbacked.DexBackedDexFile bị thu nhỏ hoặc bị làm mờ. Điều này có nghĩa là liên kết đã bị hỏng - dex_parser không thể nhập DexBackedDexFile.

Vì vậy, hãy tắt thu hẹp và làm xáo trộn đối với DexBackedDexFile hoặc cho phép tối ưu hóa và làm xáo trộn trên dex_parser.

18

Bạn đã yêu cầu Proguard giữ một phương thức nhất định void foo(Bar bar); nhưng để làm xáo trộn lớp mô tả Bar.

Đây chỉ là vấn đề nếu bạn định gọi phương thức từ một nguồn bên ngoài vì chữ ký sẽ bị thay đổi bởi sự che khuất.

Vì vậy, có những lựa chọn sau:

  • Configure Proguard cũng để giữ Bar.

  • Sử dụng chỉ thị -dontnote để yêu cầu Proguard không in ghi chú như thế này.

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