सवाल प्रोगुआर्ड के साथ चेतावनी प्राप्त करना (बाहरी पुस्तकालयों के साथ)


मैंने प्रोगार्ड को सक्षम किया है, और मैं एपीके बनाने की कोशिश कर रहा हूं, और मुझे बहुत सारी चेतावनियां मिल रही हैं और उन्हें नहीं पता कि उन्हें कैसे हल किया जाए।

मैं रेट्रोफिट, जेएसओप और अन्य स्टॉक पुस्तकालयों का उपयोग कर रहा हूं, मुझे निम्नलिखित चेतावनियां मिल रही हैं:

 Warning:okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
 Warning:okio.Okio: can't find referenced class java.nio.file.Files
 Warning:okio.Okio: can't find referenced class java.nio.file.Path
 Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption
 Warning:okio.Okio: can't find referenced class java.nio.file.Path
 Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption
 Warning:okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
 Warning:okio.Okio: can't find referenced class java.nio.file.Path
 Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption
 Warning:okio.Okio: can't find referenced class java.nio.file.Path
 Warning:okio.Okio: can't find referenced class java.nio.file.OpenOption
 Warning:okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
 Warning:retrofit2.Platform$Java8: can't find referenced method 'boolean isDefault()' in library class java.lang.reflect.Method
 Warning:retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandles$Lookup
 Warning:retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandle
 Warning:retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandles
 Warning:retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandle
 Warning:retrofit2.Platform$Java8: can't find referenced class java.lang.invoke.MethodHandles$Lookup
 Warning:retrofit2.Platform$Java8: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
 Note: the configuration keeps the entry point 'android.support.v7.widget.FitWindowsLinearLayout { void setOnFitSystemWindowsListener(android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener); }', but not the descriptor class 'android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener'
 Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setAccessibilityDelegateCompat(android.support.v7.widget.RecyclerViewAccessibilityDelegate); }', but not the descriptor class 'android.support.v7.widget.RecyclerViewAccessibilityDelegate'
 Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setAdapter(android.support.v7.widget.RecyclerView$Adapter); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$Adapter'
 Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setRecyclerListener(android.support.v7.widget.RecyclerView$RecyclerListener); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$RecyclerListener'
 Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$LayoutManager'
 Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setRecycledViewPool(android.support.v7.widget.RecyclerView$RecycledViewPool); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$RecycledViewPool'
 Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setViewCacheExtension(android.support.v7.widget.RecyclerView$ViewCacheExtension); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$ViewCacheExtension'
 Warning:there were 22 unresolved references to classes or interfaces.
 Warning:there were 1 unresolved references to library class members.
 Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.

मेरा प्रोजेर्ड यहां है:

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

 ##---------------Begin: proguard configuration for Gson  ----------
 # Gson uses generic type information stored in a class file when working with fields. Proguard
 # removes such information by default, so configure it to keep all of it.
 -keepattributes Signature


 # Gson specific classes
 -keep class com.abohani.tdroms.SharedPreferencesTools { *; }
 #-keep class com.google.gson.stream.** { *; }


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

44
2018-03-15 12:09


मूल


चेतावनी के रूप में आपको ओकेओ के साथ कक्षा को जोड़ना चाहिए या डॉटवार्न करना चाहिए। ओकिओ।


जवाब:


जब आप ProGuard का उपयोग करते हैं तो आपको हमेशा रहना होता है सभी चेतावनियों को हल करें

ये चेतावनियां आपको बताती हैं कि पुस्तकालय कुछ कोड का संदर्भ देते हैं और इसके लिए कोई स्रोत नहीं हैं। यह हो सकता है और ठीक नहीं हो सकता है। यह निर्भर करता है कि समस्याग्रस्त कोड कभी बुलाया जाता है।

इस मामले में ओकिओ और रेट्रोफिट 2 के लिए चेतावनियों को अनदेखा किया जा सकता है। पैकेज java.nio.* एंड्रॉइड पर उपलब्ध नहीं है और कभी नहीं कहा जाएगा। आप उन चेतावनियों को सुरक्षित रूप से अनदेखा कर सकते हैं। जावा 8 कक्षाओं का भी उपयोग नहीं किया जाएगा।

इसे अपने ProGuard कॉन्फ़िगरेशन में जोड़ें, इसे आपकी समस्या को ठीक करना चाहिए:

-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8

110
2018-03-15 12:21



एंड्रॉइड 7 एसडीके जावा 8 और जावा.एनओ का समर्थन करता है। क्या यह उत्तर अभी भी सही है? (अस्वीकरण: मुझे ओकिओ के बारे में बहुत कुछ पता है, क्षमा करें अगर यह एक बेवकूफ सवाल है)। - Blaisorblade
हाँ, यह अभी भी है। एंड्रॉइड एसडीके में कुछ वर्ग शामिल हैं java.nio, लेकिन इसमें कुछ भी शामिल नहीं है java.nio.file। - Tomik


रेट्रोफिट पेज ने प्रोजेवार्ड बिल्ड के बारे में नोट किया है:

मंच प्लेटफॉर्म निर्धारित करने के लिए एंड्रॉइड पर मौजूद नहीं है, जो क्लास कॉल।

-dontnote retrofit2.Platform

जावा 8 वीएम पर चलते समय प्लेटफार्म का इस्तेमाल किया जाता है। रनटाइम पर इस्तेमाल नहीं किया जाएगा।

-dontwarn retrofit2.Platform $ Java8

कन्वर्टर्स और एडेप्टर द्वारा प्रतिबिंब द्वारा उपयोग के लिए सामान्य प्रकार की जानकारी बनाए रखें।

- हस्ताक्षर हस्ताक्षर

प्रॉक्सी इंस्टेंस द्वारा उपयोग के लिए घोषित चेक अपवादों को बनाए रखें।

- अपवादों को रखता है

इसे यहां देखें: http://square.github.io/retrofit/


0
2018-04-09 11:10