2011-09-29 29 views
15

Tôi cần phải ngăn Proguard làm xáo trộn bất kỳ lớp học nào từ gói com.foo.*.Làm thế nào để ngăn chặn proguard từ obfuscating toàn bộ gói?

Tôi đã thử:

-keep com.foo.** { 
    <fields>; 
    <methods>; 
    <constructors>; 
} 

Nhưng Proguard nói:

Error: Unexpected keyword 'com.sun.foo.**' in line 32 of file 'obfuscationConfig.pro', included from argument number 1

tôi nhận được một lỗi tương tự nếu tôi cố gắng keep name com.foo** hoặc keep * com.foo.**.

+0

Bạn đã bao giờ tìm hiểu tại sao điều này đã đem lại cho bạn "từ khóa bất ngờ"? Tôi đã sử dụng một cái gì đó tương tự và nó được sử dụng để làm việc nhưng tôi đã nhận được cùng một lỗi gần đây. – speedynomads

Trả lời

30

Cố gắng sử dụng như sau:

-keep class com.foo.** { 
    public protected private *; 
} 
+0

Điều này sẽ không giữ mọi thứ? – tomwhipple

+0

@tomwhipple nó sẽ giữ mọi thứ trong gói 'com.foo' (và gói con) – Idolon

+4

... câu trả lời là" Có ", để ngăn chặn obfuscation thành viên gói riêng, bạn phải thêm một dòng mới vào khối,' *; ' Thật là một sự ghê tởm của người dùng. – nmr

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