2012-08-30 7 views
19

で突風を縮小することはできません私のProGuardの設定ファイルである(私ははここで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 

をアンドロイドのツールフォルダからそれをコピーして、いくつかの行を追加して、私は私のアプリで突風を使用したいが、私は難読化しようとすると、私はソースを難読化しないようにしようとすると、

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

またProGuardのは失敗

ProGuardので突風を使用する方法012:。?FlurryAgen.jarと私のアプリは、ProGuardのは、このようなエラーのdosensを言って失敗しますそして私の情報源を難読化しないようにproguardを作る方法は?

UPDATE はまた、私はFlurryAgent.jarが既に難読化さそうな言及 - http://korniltsev.ru/p/jBU0f1c.png。私たちは全体の瓶を縮小することを無視することができますか?

答えて

46

は最後に、私はこのようにそれを行うために管理:

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

'-dontwarn com.flurry。**'のようにFlurryが実際に統計を正しく収集していることを確認できましたか?私は同じ状況で、Flurryを使用するアプリケーションでProguardを使用しようとしていますが、実際に何が起こっているのか分かりませんので、 'dontwarn'を使用する場合は少し慎重です。 –

+8

フォローアップ:ちょっとした権限を追加するだけで、Flurry Android SDKとFlurryAds-READMEv3.0.5.pdf *ファイルを再ダウンロードしました。最後に、非常に短いセクションがあります。読み取り: * 7。 ProGuardを使用する(オプション) アプリを公開する前にAPKでProGuardを実行する予定の場合は、「proguard.cfg」ファイルに以下を追加する必要があります。 -keep class com.flurry。** {*; } -dontwarn com.flurry ** * このように多くの警告を無視すると、私にはいくらか不快感がありますが、この方法を使用します。 –

5

FlurryとAdListenerとの具体的なやり取りについてはわかりませんが、Googleのクラス名は難読化されています。

proguardファイルに-keep public class com.google.ads.AdListenerという行を追加してみてください。 Flurryが他のcom.google.adsクラスを使用している場合は、クラス例外をいくつか追加する必要がありますが、その行はあなたの即時の警告を解決するはずです。

更新: 問題は、パブリッククラスのメソッド名がさまざまな広告ライブラリに対して難読化されていることです。だから、あなたはこれらのメソッドを含めるために、追加の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 *; } 

がフラリーで働いたとProGuardの、徹底的に選択のあなたのアプリマーケット(複数可)にアップロードする前にAPKをテストしてくださいます。

+0

は、返信いただきありがとうございます!私は多くの警告(http://korniltsev.ru/p/jBU05Go.png)を持っているので、私の意見ではそれらを無視することは彼の解決策ではありません。また、私は、FlurryAgent.jarが既に難読化されているようだ - http://korniltsev.ru/p/jBU0f1c.png。私たちは全体の瓶を縮小することを無視することができますか? –

+0

ええ、私はプロガードで特定の例外を除いてFlurryを使用しました。ビルドパスに入っている限り、正常に動作します。 多くの例外を除き、適切なクラスの名前を保持する必要があります。おそらく、行に沿った何か '-keep public class com.google.ads。** { public protected *; } 'はうまくいくでしょうか? –

+0

そして、はい、私は先に進み、FlurryAgent.jarを縮小することを無視します:-) –

10

Korniltsevの答えは、しかし、新たな突風のSDK(3.2.2)は、以下を追加することを提案、私の作品:

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

新しい行が必要ないくつかのコーナーケースかもしれないので、私はREADMEで終わりました。

+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.** 
関連する問題