2013-11-03 6 views
5

के साथ ORMLite मॉडल कक्षाओं को ओबस्कसेट करना मेरे पास कुछ मॉडल हैं जिन्हें मैं अपने कोड में अपवित्र करना चाहता हूं। मुझे पता है कि मैं सिर्फ पूरे मॉडल पैकेज को अनदेखा कर सकता हूं लेकिन मैं ऐसा नहीं करना चाहता हूं। मैंने कुछ प्रोजेक्ट tweaks की कोशिश की और सभी प्रासंगिक पदों का कोई फायदा नहीं हुआ। ORMlite java.lang.RuntimeException: Unable to create application ...App: java.lang.IllegalArgumentException: Foreign field class ....f.p does not have id field फेंकता रहता है। मैंने जांच की कि एनोटेशन अभी भी dex2jar और jd के साथ है, और यह अभी भी वहां है।प्रोगुआर्ड

मैं इस ProGuard विन्यास है (और एक बहुत अधिक है कि अन्य भागों obfuscates):

आक्रामक सामान:

-keepattributes *Annotation* 
-keepattributes Signature 
-keepattributes EnclosingMethod 

ORMLITE संबंधित:

-mergeinterfacesaggressively 
-allowaccessmodification 
-optimizationpasses 5 

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

विभिन्न व्यवस्थाएं द्वारा आवश्यक जानकारी रखने :

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

क्या मुझे कुछ याद आ रहा है या क्या यह संभव नहीं है?

उत्तर

5

जैसा कि ORMLite आपके डेटा को सहेजने या बनाए रखने के प्रतिबिंब का उपयोग करता है, वे इकाई के अन-अप्रचलित नाम (यानी कक्षाएं जिन्हें आप डेटा को सहेजने या बनाए रखने के लिए उपयोग कर रहे हैं) चाहते हैं।

यह अपवाद फेंक दिया गया है क्योंकि ORMLite अपनी तालिकाओं के लिए इकाई वर्ग ढूंढने की कोशिश कर रहा है और यह समान नाम वाले वर्गों और सदस्यों को खोजने में सक्षम नहीं है।

बस निम्नलिखित कोड का उपयोग करके अस्पष्ट होने से अपनी इकाई वर्गों पर ध्यान न दें:

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

जहां com.xyz.components इकाई वर्गों के लिए अपने पैकेज है।

मुझे आशा है कि इससे मदद मिलती है!

+2

मुझे पता है कि मैं ऐसा कर सकता हूं लेकिन मैं नहीं चाहता हूं, और न ही मुझे समझ में आता है कि मुझे क्यों करना होगा, यह देखते हुए कि एनोटेशन अभी भी हैं। – meredrica

संबंधित मुद्दे