2013-05-03 8 views
8
के साथ करना मुश्किल होता

मेरा ऐप कहानियो से पहले ठीक काम करता है लेकिन जब मैं ProGuard सक्षम मैं निम्नलिखित त्रुटि मिलती है:Parcelable मुद्दे जब Proguard

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

तो Parcelable चाहिए:

2013-05-02 13:43:58.772 E 30138/AndroidRuntime: FATAL EXCEPTION: main java.lang.NumberFormatException: Invalid long: "0.20" 
    at java.lang.Long.invalidLong(Long.java:125) 
    at java.lang.Long.parse(Long.java:362) 
    at java.lang.Long.parseLong(Long.java:353) 
    at java.lang.Long.parseLong(Long.java:319) 
    at com.sourcetone.data.model.Station.long getId()(SourceFile:195) 
    at com.sourcetone.STStationListFragment.void deleteStation(com.sourcetone.data.model.Station)(SourceFile:298) 
    at com.sourcetone.STStationListFragment.void access$4(com.sourcetone.STStationListFragment,com.sourcetone.data.model.Station)(SourceFile:293) 
    at com.sourcetone.STStationListFragment$ArrayListAdapter$1.void onClick(android.view.View)(SourceFile:274) 
    at android.view.View.performClick(View.java:3528) 
    at android.view.View$PerformClick.run(View.java:14217) 
    at android.os.Handler.handleCallback(Handler.java:605) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4482) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561) 
    at dalvik.system.NativeStart.main(Native Method) 

2013-05-02 13:43:58.803 W 472/ActivityManager: Force finishing activity com.sourcetone/.STMainActivity 

मेरे ProGuard config निम्नलिखित है सही रहो? अमान्य लांग जो इसे फेंक रहा है वास्तव में मेरे अनुरोध का एक और हिस्सा है, इसलिए यह गलत संख्या पढ़ रहा है। क्या मुझे अपनी HttpResponse क्लास भी रखना है? यह और क्या हो सकता है?

+0

यह इस बात पर निर्भर करता है कि आप अपने अनुरोध को कैसे पार्स करते हैं। आप किस प्रतिबिंबित पुस्तकालय का उपयोग कर रहे हैं? जीसन, जैक्सन? –

उत्तर

2
-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

आपकी कक्षा की सभी सामग्री को बरकरार नहीं रखता है, यह केवल वर्गनाम और CREATOR विधि रखता है।

भी अपने Parcelable कक्षा में खेतों रखने के लिए, की तरह कुछ जोड़ने का प्रयास करें:

-keepclassmembers class * implements android.os.Parcelable { 
public <fields>; 
} 
-1
-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

यह सिर्फ वर्ग के नाम और निर्माता रखेंगे।

आप

-keepclassmembers class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator CREATOR; 
} 

डिफ़ॉल्ट Android नियमों के लिए इसे बदल देना चाहिए ऊपर दिए गए निर्देश भी शामिल है, और अपनी परियोजना के लिए भी लागू किया जाएगा, यदि आप छोड़ डिफ़ॉल्ट जगह में Gradle परिभाषा उत्पन्न:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
संबंधित मुद्दे