2015-10-10 7 views
6

मेरे Android स्टूडियो परियोजना में ProGuard चल रहा है मैं इस तरह चेतावनी मिलती है:एंड्रॉयड ProGuard: संदर्भित नहीं मिल सकता है वर्ग

Warning: com.google.common.collect.Maps: can't find referenced class javax.annotation.Nullable 

मैं इस में से एक के साथ इस का समाधान हो सकता है वेरिएंट:

-keep class com.google.common.collect.** { *; } 
-dontwarn com.google.common.collect.** 
-keep class javax.annotation.** { *; } 
-dontwarn javax.annotation.** 

उपर्युक्त चेतावनी को हल करने का सबसे अच्छा तरीका क्या है? संस्करण 1. और 2. के बीच क्या अंतर है?

+0

अपने 'build.gradle' फ़ाइल दिखाएँ –

उत्तर

6

"कई पूर्व-संकलित तृतीय-पक्ष पुस्तकालयों का यह सबसे आम त्रुटि है, जो वास्तव में उपयोग नहीं किए जाते हैं और इसलिए मौजूद नहीं हैं। यह डीबग बिल्ड में ठीक काम करता है, लेकिन रिलीज में, प्रोगार्ड अपेक्षा करता है सभी पुस्तकालयों, इसलिए यह एक उचित स्थिर विश्लेषण कर सकते हैं। "

से: http://proguard.sourceforge.net/index.html#manual/examples.html

तो, यह javax.annotation.Nullable नहीं वहाँ अपनी परियोजना में हो सकता है, लेकिन पुस्तकालयों का उपयोग कर रहे कुछ वर्गों जो अलग उन की बात कर रहे है।

हालांकि आप -dontwarn javax.annotation.** या --dontwarn com.google.common.collect.** द्वारा इन चेतावनियों से बच सकते हैं। लेकिन मुझे लगता है कि -keep class javax.annotation.** { *; } और अजीब लग रहा है।

तो, यदि आप -keep class com.google.common.collect.** { *; } करते हैं तो आप Proguard निष्पादन (शंकु, अनुकूलन और obfuscation) के सभी 3 चरणों से इस पैकेज को छोड़ दें जो मेरी समझ के अनुसार समझ में आता है।

1

पैकेज

-keep class com.package_name.** { *; } 
0

उपयोग जोड़ने के लिए समर्थन libs Nullable बजाय इसे न भूलें:

import android.support.annotation.Nullable; 
संबंधित मुद्दे