2012-08-30 17 views
19

यहाँ मेरी ProGuard config है (मैं इसे एंड्रॉयड उपकरणों फ़ोल्डर से नकल की और कुछ पंक्तियाँProGuard साथ बाढ़ हटना नहीं कर सकते

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* 
-optimizationpasses 5 
-allowaccessmodification 
-dontpreverify 


# The remainder of this file is identical to the non-optimized version 
# of the Proguard configuration file (except that the other file has 
# flags to turn off optimization). 

-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-verbose 

-keepattributes *Annotation* 
-keep public class com.google.vending.licensing.ILicensingService 
-keep public class com.android.vending.licensing.ILicensingService 

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native 
-keepclasseswithmembernames class * { 
    native <methods>; 
} 

# keep setters in Views so that animations can still work. 
# see http://proguard.sourceforge.net/manual/examples.html#beans 
-keepclassmembers public class * extends android.view.View { 
    void set*(***); 
    *** get*(); 
} 

# We want to keep methods in Activity that could be used in the XML attribute onClick 
-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

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

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

# The support library contains references to newer platform versions. 
# Don't warn about those in case this app is linking against an older 
# platform version. We know about them, and they are safe. 
-dontwarn android.support.** 

###################### 
# added by me 
######################## 
# guava 
-keepclasseswithmembers class com.google.common.base.internal.Finalizer{ 
    <methods>; 
} 

-dontwarn sun.misc.Unsafe 
-dontwarn com.google.common.collect.MinMaxPriorityQueue 

# 
#Action Bar Sherlock 
-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 


#-dontobfuscate  
#-libraryjars libs/FlurryAgent.jar 

जोड़ा मैं अपने अनुप्रयोग में घबराहट का उपयोग करना चाहते हैं, लेकिन जब मैं अंधेरा करना करने की कोशिश FlurryAgen.jar साथ मेरे ऐप ProGuard इस तरह त्रुटियों की एक DOSENS कह विफल रहता है:।

Warning: com.flurry.android.ay: can't find referenced class com.google.ads.AdListener 

इसके अलावा ProGuard में विफल रहता है जब मैं सूत्रों अंधेरा करना नहीं की कोशिश

ProGuard साथ बाढ़ का उपयोग कैसे करें 012?और मेरे स्रोतों को खराब करने के लिए प्रोजेगार्ड कैसे बनाना है? http://korniltsev.ru/p/jBU0f1c.png -

अद्यतन इसके अलावा मुझे लगता है कि पहले से ही FlurryAgent.jar समझ से परे लगता है उल्लेख किया। क्या हम पूरे जार को कम करने की अनदेखी कर सकते हैं?

उत्तर

46

अंत में मुझे लगता है कि इस तरह से करने के लिए प्रबंधित कुछ कोने के मामले हो सकते हैं जहां नई लाइनों की आवश्यकता होती है, इसलिए मैं अपने रीडमे के साथ जा रहा हूं।

+0

क्या आप यह सत्यापित करने में सक्षम हैं कि Flurry अभी भी अभ्यास में सही ढंग से आंकड़े एकत्र कर रहा है, '-dontwarn com.flurry। **' दिया गया है? मैं उसी स्थिति में हूं जो प्रोगुआर्ड का उपयोग फ्लोररी के उपयोग को करने वाले अनुप्रयोग पर करने की कोशिश कर रहा है, लेकिन जब मैं 'डोंटवार्न' का उपयोग करने की बात आती हूं तो थोड़ी सावधानी बरतती है कि मुझे वास्तव में समझ में नहीं आता कि क्या हो रहा है। –

+8

फ़ॉलो करें: बस अपने उत्तर में थोड़ा अधिकार जोड़ने के लिए, मैंने फ्लोर एंड्रॉइड एसडीके को फिर से डाउनलोड किया है और फ़ाइल में * FlurryAds-READMEv3.0.5.pdf *, अंत में, एक बहुत ही संक्षिप्त खंड है पढ़ता है: * 7। ProGuard (वैकल्पिक) का उपयोग करना यदि आप अपने ऐप को रिलीज़ करने से पहले अपने एपीके पर ProGuard चलाने की योजना बना रहे हैं, तो आपको अपनी "proguard.cfg" फ़ाइल में निम्नलिखित जोड़ना होगा: -keep class com.flurry। ** {*; } -dontwarn com.flurry ** ** * तो मुझे लगता है कि मैं इस विधि का उपयोग करूंगा, भले ही इस चेतावनी को अनदेखा करने से मुझे कुछ हद तक असहज हो। –

5

मुझे यकीन है कि कैसे घबराहट विशेष रूप से AdListener के साथ बातचीत कर रहा है नहीं कर रहा हूँ, लेकिन गूगल की क्लास का नाम क्या समझ से परे जा रहा है है।

ProGuard फाइल करने के लिए लाइन -keep public class com.google.ads.AdListener जोड़ने का प्रयास करें। Flurry अन्य com.google.ads कक्षाओं का उपयोग करता है, तो आपको कुछ और कक्षा अपवाद जोड़ने की आवश्यकता हो सकती है, लेकिन उस पंक्ति को आपकी तत्काल चेतावनी को हल करना चाहिए।

अद्यतन: समस्या यह है कि सार्वजनिक वर्ग विधि के नाम विभिन्न विज्ञापन पुस्तकालयों के लिए समझ से परे जा रहा है। तो, आप अतिरिक्त ProGuard सेटिंग्स में शामिल करने के लिए इन तरीकों में शामिल करने के लिए आवश्यकता हो सकती है: और ProGuard

-keep public class com.google.ads.** { public protected *; } 
-keep public class com.inmobi.androidsdk.** { public protected *; } 
-keep public class com.millenialmedia.android.** { public protected *; } 
-keep public class com.mobclix.android.sdk.** { public protected *; } 
-keep public class com.jumptap.adtag.** { public protected *; } 

घबराहट के साथ काम करने के बाद अपने आप को अच्छी तरह से अपनी पसंद के एप्लिकेशन बाजार (ओं) को अपलोड करने से पहले apk परीक्षण करने के लिए सुनिश्चित हो है।

-keep class com.flurry.** { *; } 
-dontwarn com.flurry.** 
-keepattributes *Annotation*,EnclosingMethod 
-keepclasseswithmembers class * { 
public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

वहाँ:

-keep class com.flurry.** { *; } 
-dontwarn com.flurry.** 
+0

उत्तर के लिए धन्यवाद! मैं चेतावनी (http://korniltsev.ru/p/jBU05Go.png) का एक बहुत है, मेरी राय में तो उनकी उपेक्षा करते हुए वह समाधान नहीं है। इसके अलावा मुझे लगता है कि पहले से ही FlurryAgent.jar समझ से परे लगता है उल्लेख किया - http://korniltsev.ru/p/jBU0f1c.png। क्या हम पूरे जार को कम करने की अनदेखी कर सकते हैं? –

+0

हाँ, मैं ProGuard में किसी भी विशिष्ट अपवाद के बिना घबराहट का उपयोग किया है और यह बहुत देर के रूप में यह निर्माण रास्ते में बस ठीक काम करता है। कि कई अपवादों के साथ, आप एक अच्छे कई वर्गों के नाम को संरक्षित करने की जरूरत है। शायद 'के साथ कुछ सार्वजनिक वर्ग com.google.ads रखो। ** { सार्वजनिक संरक्षित *; } 'काम करेगा? –

+0

और हाँ, मैं आगे बढ़ूंगा और FlurryAgent.jar को कम करने की अनदेखी करूँगा :-) –

10

Korniltsev का जवाब मेरे लिए काम करता है, लेकिन नए बाढ़ एसडीके (3.2.2) निम्नलिखित जोड़ने के लिए पता चलता है:

+1

यह उत्तर Flurry 4.2.0 के लिए मान्य है – deko

3

आधिकारिक घबराहट (अब याहू के स्वामित्व वाले) से ProGuard फ़ाइल की सिफारिश की यहाँ उपलब्ध है:

https://developer.yahoo.com/flurry/docs/publisher/code/android/

-­keep class com.flurry.** { *; } 
-­dontwarn com.flurry.** 
-­keepattributes *Annotation*,EnclosingMethod,Signature 
-­keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 



# Google Play Services library 
-­keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 

-­keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { 
    public static final *** NULL; 
} 

-­keepnames @com.google.android.gms.common.annotation.KeepName class * ­keepclassmembernames class * { 
    @com.google.android.gms.common.annotation.KeepName *; 
} 

-­keepnames class * implements android.os.Parcelable { 
    public static final ** CREATOR; 
} 
#If you are using the Google Mobile Ads SDK, add the following: 
# Preserve GMS ads classes 
-­keep class com.google.android.gms.ads.** { *; 
} 
-­dontwarn com.google.android.gms.ads.** 


#If you are using the InMobi SDK, add the following: 
# Preserve InMobi Ads classes 
-­keep class com.inmobi.** { *; 
} 
-­dontwarn com.inmobi.** 
#If you are using the Millennial Media SDK, add the following: 
# Preserve Millennial Ads classes 
-­keep class com.millennialmedia.** { *; 
} 
-­dontwarn com.millennialmedia.** 
संबंधित मुद्दे