2013-11-03 20 views
5

Tôi có một vài mô hình mà tôi muốn làm xáo trộn trong mã của mình. Tôi biết rằng tôi chỉ có thể bỏ qua toàn bộ gói mô hình nhưng tôi không muốn làm điều đó. Tôi đã thử một số chỉnh sửa proguard và kiểm tra tất cả các bài đăng có liên quan để không có kết quả. ORMlite tiếp tục ném java.lang.RuntimeException: Unable to create application ...App: java.lang.IllegalArgumentException: Foreign field class ....f.p does not have id field. Tôi đã kiểm tra rằng chú thích vẫn ở đó với dex2jarjd và chú thích vẫn ở đó.Làm xáo trộn các lớp mô hình ORMLite với Proguard

tôi có cấu hình Proguard này (và nhiều hơn nữa mà hoang mang các bộ phận khác):

thứ hung hăng:

-mergeinterfacesaggressively 
-allowaccessmodification 
-optimizationpasses 5 

-verbose 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

giữ thông tin cần thiết bởi các khuôn khổ khác nhau:

-keepattributes *Annotation* 
-keepattributes Signature 
-keepattributes EnclosingMethod 

ORMLITE liên quan :

-keep class com.j256.** 
-keepclassmembers class com.j256.** { *; } 
-keep enum com.j256.** 
-keepclassmembers enum com.j256.** { *; } 
-keep interface com.j256.** 
-keepclassmembers interface com.j256.** { *; } 

Tôi có thiếu điều gì đó hay không?

Trả lời

5

Khi ORMLite sử dụng sự phản chiếu để lưu hoặc giữ lại dữ liệu của bạn, họ muốn tên của thực thể không bị xáo trộn (tức là các lớp bạn đang sử dụng để lưu hoặc giữ lại dữ liệu).

Ngoại lệ này được ném vì ORMLite đang cố gắng tìm các lớp Thực thể cho các bảng của nó và không thể tìm thấy các lớp và thành viên có tên tương tự.

Chỉ cần bỏ qua lớp thực thể của bạn khỏi bị obfuscated sử dụng đoạn mã sau:

-keep class com.xyz.components.** 
-keepclassmembers class com.xyz.components.** { *; } 

nơi com.xyz.components là gói của bạn cho các lớp Entity.

Tôi hy vọng điều này sẽ hữu ích!

+2

Tôi biết rằng tôi có thể làm điều đó nhưng tôi không muốn, cũng không hiểu tại sao tôi phải làm vậy, bởi vì các chú thích vẫn còn đó. – meredrica

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