2012-05-19 29 views
19

tôi nhận được luôn luôn với ProGuard lỗi sau:ProGuard lỗi không thể tìm thấy cha hoặc giao diện org.apache.http.entity

[2012-05-19 17:50:13 - xxx] Warning: there were 13 unresolved references to  program class members. 
[2012-05-19 17:50:13 - xxx]   Your input classes appear to be  inconsistent. 
[2012-05-19 17:50:13 - xxx]   You may need to recompile them and try again. 
[2012-05-19 17:50:13 - xxx]   Alternatively, you may have to specify the option 
[2012-05-19 17:50:13 - xxx]   '-dontskipnonpubliclibraryclassmembers'. 
[2012-05-19 17:50:13 - xxx] Error: Please correct the above warnings first. 
[2012-05-19 17:55:40 - xxx] Proguard returned with error code 1. See console 
[2012-05-19 17:55:40 - xxx] Note: there were 239 duplicate class definitions. 
[2012-05-19 17:55:40 - xxx] Warning: org.apache.http.entity.mime.FormBodyPart: can't find superclass or interface org.apache.james.mime4j.message.BodyPart 
[2012-05-19 17:55:40 - xxx] Warning: org.apache.http.entity.mime.HttpMultipart: can't find superclass or interface org.apache.james.mime4j.message.Multipart 
[2012-05-19 17:55:40 - xxx] Warning: org.apache.http.entity.mime.MinimalField: can't find superclass or interface org.apache.james.mime4j.parser.Field 

tập tin proguard.cfg của tôi là:

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 

-keepattributes *Annotation* 
-keepattributes SourceFile, LineNumberTable 

-libraryjars /libs/crittercism_v2_0_1.jar 
-libraryjars /libs/dropbox-android-sdk-1.2.2.jar 
-libraryjars /libs/FlurryAgent.jar 
-libraryjars /libs/httpmime-4.0.3.jar 
-libraryjars /libs/json_simple-1.1.jar 

tôi đã thêm tất cả libs bên ngoài của tôi vậy tại sao tôi luôn nhận được các lỗi này? Có ai giúp được không?

EDIT 21.05.2012: Vấn đề là nếu bạn thêm "Dropbox" jar AND "ActionBarSherlock". Nếu tôi chỉ thêm "Dropbox", tôi không có vấn đề gì. Nếu tôi chỉ thêm "ActionBarSherlock", tôi không có vấn đề gì. Nhưng nếu tôi thêm cả hai, tôi sẽ nhận được các lỗi ở trên.

Trả lời

35

Sự cố tồn tại nếu bạn đã thêm lọ "ActionBarSherlock" và "DropBox" vào dự án của mình. Để giải quyết vấn đề, hãy thêm dòng dưới đây để tập Proguard-project.txt của bạn:

-dontwarn org.apache.** 

Các cảnh báo sẽ bị bỏ qua và nó sẽ làm việc vì mỗi lọ mình đang làm việc. Vì vậy, tôi nghĩ, đây sẽ là lỗi trong ProGuard, nếu cả hai đều được thêm vào.

+0

nó không hoạt động và lỗi là: Cảnh báo: aa $ a: không thể tìm trường tham chiếu 'org.apache.http.HttpEntity wrapEntity' trong lớp chương trình aa $ a – Kenji

+0

@Kenji: Xin lỗi tôi không sử dụng ActionBarSherlock nữa, vì vậy Tôi không thể giúp bạn. – chrisonline

+0

@BinilS: Ý của bạn là gì với "API sẽ không gọi bằng cách sử dụng org.apache"? – chrisonline

8

Có thể bạn cần phải:

-keep class org.apache.http.**

-keep interface org.apache.http.**

Đó là giả định tất nhiên ProGuard được phàn nàn về các lớp apache. Phải thừa nhận rằng tôi đoán một chút vì tôi không có chuyên gia về ProGuard.

+0

Có, tôi nghĩ đây là giải pháp, nhưng tôi không muốn giữ nó vì tôi không sử dụng. Và tất cả các lọ bên ngoài tôi đã thêm vào thư viện! Vậy tại sao tôi nhận được lỗi này? – chrisonline

+0

Bạn có thể không có lựa chọn nào. Việc tìm kiếm trên trang ví dụ ProGuard có giúp ích không? http://proguard.sourceforge.net/index.html#manual/examples.html – Kerry

+1

Tôi đã thử nó, nhưng nó không hoạt động. Cùng một lỗi ... – chrisonline

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