sau khi quét qua tất cả các loại truy vấn liên quan đến vấn đề w/obfuscation bằng Proguard, tôi đã đến thời điểm tôi cảm thấy mình là chỉ có vấn đề. Do đó, bài đăng.Lỗi khi làm việc với thư viện sau obfuscation của Jackson bằng cách sử dụng Proguard
Tôi có một ứng dụng Android khá chuẩn, sử dụng các cuộc gọi REST dựa trên JSON để trao đổi dữ liệu. Tôi sử dụng thư viện Jackson
để phân tích cú pháp dữ liệu JSON. Tất cả mọi thứ đã được làm việc hoàn hảo, cho đến khi chúng tôi quyết định kết hợp obfuscation cho bản phát hành của chúng tôi xây dựng bằng cách sử dụng Proguard. Sau khi phân loại ra một thế giới của các vấn đề liên quan đến gọi lại, cuối cùng tôi đã mắc kẹt với một vấn đề liên quan đến thư viện Jackson.
về cơ bản, dòng ObjectMapper om = new ObjectMapper()
- không hoạt động! Tôi tiếp tục nhận được lỗi sau tại dòng đó:
Caused by: java.lang.ExceptionInInitializerError
at org.codehaus.jackson.map.ObjectMapper.<clinit>(Unknown Source)
... 8 more
Caused by: java.lang.NullPointerException
at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<init>(Unknown Source)
at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.<clinit>(Unknown Source)
... 9 more
Sau khi đọc một loạt bài đăng khác liên quan đến thư viện bên ngoài, bật và tắt tối ưu hóa và thu hẹp cờ, tôi chỉ không biết gì ngay bây giờ.
Những điều khác nhau tôi đã bao gồm trong tập tin proguard.cfg
của tôi vì lợi ích của Jackson -
-dontskipnonpubliclibraryclassmembers
-dontoptimize
-dontshrink
-libraryjars xtraLibs/joda-time-1.6.2.jar;xtraLibs/xml-apis.jar;xtraLibs/jsr311-api-0.8.jar;xtraLibs/stax2-api-3.0.0.jar;xtraLibs/httpmime-4.0.1.jar
giữa này, tôi đã bật các dontoptimize
và dontshrink
cờ. Tuy nhiên, kết quả luôn luôn giống nhau.
Trong suốt thời gian tôi đã bỏ ra để cố giải quyết vấn đề này, tôi đã ngạc nhiên và lo lắng bởi những nỗ lực đi vào thư viện Proguard. Chỉ khi mọi thứ không hoạt động, chúng hơi bị làm mờ.
phiên bản Proguard - 4,6
eric lafortune - cảm ơn bạn rất nhiều **! cho bất kỳ ai khác phải đối mặt với tình huống này, vui lòng tìm giải pháp từ toàn bộ chuỗi thư tại diễn đàn sourceforge - https://sourceforge.net/projects/proguard/forums/forum/182456/topic/4867948/index/page/1 – anirvan
Với Jackson 2.1.4 tôi cần những điều này ngoài các thuộc tính trên: '-keepattributes Signature',' -keepnames class com.fasterxml.jackson. ** {*; } ',' -dontwarn com.fasterxml.jackson.databind. ** ' – ashughes
Nhận xét tuyệt vời. Tôi cũng cần điều này: -keepclassmembers public enum org.codehaus.jackson.annotate.JsonAutoDetect $ Visibility { public static final org.codehaus.jackson.annotate.JsonAutoDetect $ Visibility *; } – Sean