2013-01-10 15 views
6

के साथ एंड्रॉइड पर ORMLite का उपयोग कर क्रैश हम अपने एंड्रॉइड ऐप में ORMLite का उपयोग कर रहे हैं। यह ठीक काम कर रहा है, सिवाय इसके कि जब हम प्रोजेवार्ड के साथ एक बिल्ड करने की कोशिश करते हैं।प्रोग्रार्ड

मैं विभिन्न समान पदों पढ़ा है, और अब तक मैं अपने ProGuard-project.txt में मिल गया है

-keep class com.j256.** { 
    *; 
} 

निम्नलिखित चर्चा http://sourceforge.net/p/proguard/discussion/182456/thread/6765bb69

में सुझाव के रूप में है और मैं

मिल गया है
-keepclassmembers class * { 
    public <init>(android.content.Context); 
    public <init>(android.app.Activity,int); 
} 

एक और stackoverflow सवाल Proguard with OrmLite on Android

में सुझाव के रूप में

लेकिन यह अभी भी काम नहीं कर रहा है। मैं अगर मैं

-dontobfuscate 

जोड़ने लेकिन यह है कि कुछ हद तक पहले स्थान पर ProGuard का उपयोग करके की बात को अनदेखा इसे चलाने के लिए मिल सकता है।

जब मैं चलाने मैं एक

IllegalStateException: Could not find OpenHelperClass because none of the generic 
parameters of class class <our.package.name>.LaunchActivity extends 
OrmLiteSqliteOpenHelper. You should use getHelper(Context, Class) instead. 

कहाँ

public class LaunchActivity extends OrmLiteBaseActivity<DatabaseHelper> 

और

public class DatabaseHelper extends OrmLiteSqliteOpenHelper 

मैं जोड़ दिया है

-keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper 

-keep public class <our.package.name>.LaunchActivity 

लेकिन अभी भी कोई भाग्य नहीं है। ऐसा लगता है कि इस सवाल से पहले पूछा गया है (Problems with OrmLite and proguard obfuscation) लेकिन मुझे आशा है कि किसी को पता चलेगा कि समाधान क्या है!

+0

JVM क्रैश हो गया है या आपका सर्वर क्रैश हो गया है? या शायद आप यह कहना चाहते थे कि यह एक अपवाद फेंक दिया? – Gray

उत्तर

6

त्रुटि संदेश जेनेरिक पैरामीटर का उल्लेख करता है, इसलिए ORMLite सामान्य प्रकार की जानकारी पुनर्प्राप्त करने के लिए प्रतिबिंब का उपयोग कर रहा है। यह जानकारी वैकल्पिक हस्ताक्षर विशेषताओं (जावा जेनेरिक प्रकार मिटा देती है) में संग्रहीत है, जो ProGuard डिफ़ॉल्ट रूप से हटा देता है। आप उन्हें

-keepattributes Signature 
+6

इसके लिए धन्यवाद, यह मेरी समस्या को ठीक करता है। मुझे एक नई समस्या मिली, हालांकि, जिसे मैंने 'रखरखाव वर्ग .db जोड़कर तय किया था। ** { *; } 'हमारे सभी डीबी वर्गों को बरकरार रखने के लिए। –

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