2014-04-05 9 views
14

के साथ काम नहीं करता है मुझे पुराने प्रश्न मिल गए हैं जो एक ही विषय पर स्पर्श करते हैं लेकिन नवीनतम संस्करणों के साथ उपलब्ध उत्तरों में से कोई भी मेरे लिए काम नहीं करता है।प्रोगुआर्ड अब रेट्रोफिट

मैं अपने प्रोजेक्ट में रेट्रोफिट का उपयोग कर रहा हूं।

चेतावनी:: retrofit.client.OkClient: जब मैं इकट्ठा करने के लिए प्रयास करते समय मुझे निम्न त्रुटि नहीं संदर्भित वर्ग com.squareup.okhttp.OkHttpClient

निम्नलिखित लेकिन लगता है मैं उपयोग कर रहा हूँ कर सकते हैं इसके बारे में कोई भी मदद कर रहा है:

-keepattributes Signature 

-keep class retrofit.** { *; } 
-keep class retrofit.http.** { *; } 
-keep class retrofit.client.** { *; } 
-keep class com.squareup.okhttp.** { *; } 
-keep interface com.squareup.okhttp.** { *; } 
-keep class com.google.gson.** { *; } 
-keep class com.google.inject.* { *; } 
-keep class org.apache.http.* { *; } 
-keep class org.codehaus.mojo.** { *; } 
-keep class org.apache.james.mime4j.* { *; } 
-keep class javax.inject.* { *; } 
-keep class sun.misc.Unsafe { *; } 

-libraryjars libs/acra-4.5.0.jar 
-libraryjars libs/radial-menu-v4.jar 

-dontwarn javax.xml.stream.events.** 
-dontwarn rx.** 
-dontwarn org.apache.lang.** 

# Application classes that will be serialized/deserialized over Gson 
-keep class com.example.package.network.** { *; } 

क्या किसी ने हाल ही में इस मुद्दे को हल किया है और इसे हल किया है?

उत्तर

5

शायद मामूली लग रहा है, लेकिन क्या आपने इस लाइन को शामिल करने का प्रयास किया है? (यदि आप ओखट्प का उपयोग नहीं करते हैं)।

-dontwarn com.squareup.okhttp.** 

बात स्क्वायर आंतरिक Proguard का उपयोग नहीं करता है, तो, जबकि उनके पुस्तकालयों क्या इस्तेमाल किया जा रहा है, तो आप उसे अनदेखा कर सकते हैं अगर अपनी परियोजना के लिए इसका इस्तेमाल नहीं करता है कुछ मान्यताओं बना सकता है। मुझे पिकासो के साथ एक ही समस्या थी और यह मेरे लिए तय है।

+0

की तरह यह है कि यह संकलन पड़ता है लेकिन जैसा कि आप उल्लेख किया है केवल सुरक्षित है यदि आप वाकई उपयोग नहीं कर रहे हैं कार्यक्षमता। मैं इस जवाब को कई लोगों के लिए चिह्नित करूंगा क्योंकि यह सही होगा –

+0

मॉडल कक्षाओं को भी रखना न भूलें, यही कारण है कि यह मेरे लिए टूट गया। – wkarl

46
-keepattributes Signature 
-keepattributes *Annotation* 
-keep class com.squareup.okhttp.** { *; } 
-keep interface com.squareup.okhttp.** { *; } 
-dontwarn com.squareup.okhttp.** 

-dontwarn rx.** 
-dontwarn retrofit.** 
-keep class retrofit.** { *; } 
-keepclasseswithmembers class * { 
    @retrofit.http.* <methods>; 
} 

-keep class sun.misc.Unsafe { *; } 
#your package path where your gson models are stored 
-keep class com.example.models.** { *; } 

मैं OKHTTP साथ रेट्रोफिट के लिए ऊपर ProGuard पाठ का इस्तेमाल किया है।

संपादित: अच्छा रेपो कई लोकप्रिय पुस्तकालयों https://github.com/krschultz/android-proguard-snippets

+0

अरे आप अपने काम के बारे में थोड़ा विवरण जोड़ सकते हैं। – Runcorn

+0

मेरे लिए '-keepclasseswithember' महत्वपूर्ण था - इससे पहले कि मैंने इसे जोड़ा, मेरे @ पैथ चर को प्रतिस्थापित नहीं किया जा रहा था। धन्यवाद! :) – DanielGrech

+0

मेरे लिए यह कक्षा के बिना भी काम करता है com.squareup.okhttp। ** {*; } - इंटरफ़ेस com.squareup.okhttp। ** {*; } हालांकि मैं okhttp – netimen

2

यह विन्यास gson साथ पुराना वापस के लिए काम किया के लिए उल्लेख करने के लिए।

#Using for retrofit & gson 
-keep class com.google.gson.** { *; } 
-keep class com.google.inject.** { *; } 
-keep class org.apache.http.** { *; } 
-keep class org.apache.james.mime4j.* { *; } 
-keep class javax.inject.** { *; } 
-keep class retrofit.** { *; } 
-keep class sun.misc.Unsafe { *; } 
-keep class com.google.gson.stream.** { *; } 
-keepclassmembernames interface * { 
    @retrofit.http.* <methods>; 
} 
-keep interface retrofit.** { *;} 
-keep interface com.squareup.** { *; } 
-dontwarn rx.** 
-dontwarn retrofit.** 

प्लस आप सभी POJO वर्ग है जो बस नीचे की तरह पुराना वापस के साथ प्रयोग किया जाता है जोड़ने की जरूरत है।

-keep class com.google.gson.examples.android.model.** { *; } 
-keep class com.packagename.your.pojo.models.** { *; } 

keepattributes नीचे

-keepattributes Exceptions 
-keepattributes InnerClasses 
-keepattributes Signature 
-keepattributes Deprecated 
-keepattributes SourceFile 
-keepattributes LineNumberTable 
-keepattributes *Annotation* 
-keepattributes EnclosingMethod 

A nice discussion about proguard with retrofit goes here