我正在尝试为我的应用添加自定义Proguard规则,但我不确定在哪个文件中我应该添加这些自定义规则。我知道三个文件
1)Android/sdk/tools/proguard/proguard-android.txt
2)Android/sdk/tools/proguard/proguard-project.txt
3)Project --> app --> proguard-rules.pro
答案 0 :(得分:2)
首先,您将使用
3)项目 - > app - > proguard-rules.pro
和
一些通用的自定义规则,可以安全地应用于应用程序而不会 阻碍它的运作
取决于您应用中的代码,但如果您将minifyEnabled
设置为true(建议使用),则可能会导致许多问题可以通过proguard规则文件解决。
这是我的一个项目的proguard文件,我正在使用Fabric,httpApacheClient,shareActionProvider和其他一些需要针对proguard的特定规则的库。
# This will ignore warnings for missing translations and some other wanrinings
-ignorewarnings
# Keeping line numbers for easy error tracking :
-keepattributes SourceFile,LineNumberTable
# Support ShareActionProvider will not work without this line :
-keep class android.support.v7.widget.ShareActionProvider { *; }
# Flurry Crashlytics
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int); }
# Preserve Flurry mediation classes for DFP/AdMob Ads keep public class com.google.ads.mediation.flurry.**
# 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;
}
-keepattributes InnerClasses, EnclosingMethod
-keep class com.ironsource.mobilcore.**{ *; }
-dontwarn org.apache.http.**
-dontwarn android.net.http.AndroidHttpClient
-dontwarn android.app.Notification
-keep class com.dianxinos.DXStatService.stat.TokenManager {
public static java.lang.String getToken(android.content.Context);
}
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.app.Activity
-keep public class * extends android.content.ContentProvider
几乎你会在你使用的任何外部库的文档中找到相关的proguard设置。
答案 1 :(得分:1)
in
3)项目 - &gt; app - &gt; proguard-rules.pro
没有通用的proguard规则。所有那些通用的已包含在SDK中,这取决于您在项目中使用的功能和库。此外,没有safe
方式。您必须应用规则和测试应用 - &gt;修复任何问题然后重复相同的过程。