Memory management Android支持库的Proguard规则(v4和v7)

Memory management Android支持库的Proguard规则(v4和v7),memory-management,android-support-library,android-proguard,Memory Management,Android Support Library,Android Proguard,我在我的应用程序中使用android支持库v4和v7。我只使用了支持库中的几个小部件(不是全部)。但在最终版本的API中,支持库中包含了18K函数。(附截图) 如何减少它们 下面是我的proguard配置 -optimizationpasses 3 -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class *

我在我的应用程序中使用android支持库v4和v7。我只使用了支持库中的几个小部件(不是全部)。但在最终版本的API中,支持库中包含了18K函数。(附截图) 如何减少它们

下面是我的proguard配置

-optimizationpasses 3

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.billing.IInAppBillingService
-keepattributes SourceFile,LineNumberTable
-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.content.Context {
    public void *(android.view.View);
    public void *(android.view.MenuItem);
}
-keep public class * extends android.app.Activity
-keep public class * extends android.support.v7.app.AppCompatActivity
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.app.IntentService




-dontwarn com.google.appengine.api.urlfetch.**
-dontwarn rx.**
-dontwarn retrofit.**
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
    @retrofit.http.* <methods>;
}

-keep class com.google.** { *; }
#-keep class org.apache.** { *; }
#-keep class android.support.** { *; }
-keep class com.makeramen.** { *; }
-dontwarn android.net.http.AndroidHttpClient
-dontwarn com.google.android.gms.**



# Suppress warnings if you are NOT using IAP:
-dontwarn com.google.**
#-dontwarn org.apache.**
-dontwarn com.makeramen.**
-dontwarn android.support.**


-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }

## -------------- Google play services ------------------
-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;
}


## --------------- For native methods ---------------------
-keepclasseswithmembernames class * {
    native <methods>;
}

# ------------- To maintain custom components names that are used on layouts XML ---------------
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}


## ---------- keep generic information ---------------
-keepattributes Signature,*Annotation*,EnclosingMethod
-keep class sun.misc.Unsafe { *; }


## -------------- keep custom components --------------------
-keep public class * extends android.view.View {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keep public class * extends android.view.View {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}


## ------------ 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);
}


##------------ To keep parcelable classes (to serialize - deserialize objects to sent through Intents) -------------
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}



## ------------ Keep the R.java file ---------------
-keepclassmembers class **.R$* {
    public static <fields>;
}



##---------------Begin: proguard configuration for Bean class  ----------
#-keep public class com.nektapp.datamodels.**{ *; }
#-keep public class com.nektapp.matcher.model.**{ *;}

##---------- Keep external jars from libs folder -----------------


-libraryjars libs


##-libraryjars libs/universal-image-loader-1.9.3.jar
##-libraryjars libs/dropbox-sync-sdk-android.jar
##-libraryjars libs/gson-2.3.1.jar
##-libraryjars libs/HockeySDK-3.0.2.jar
##-libraryjars libs/jackson-core-asl-1.9.7.jar
##-libraryjars libs/jackson-mapper-asl-1.9.7.jar
##-libraryjars libs/logback-android-1.0.10-2.jar
##-libraryjars libs/slf4j-api-1.7.5.jar


##-dontwarn org.codehaus.jackson.**
 ##-keep class org.codehaus.jackson.** { *; }

-dontwarn ch.qos.logback.**
-keep class ch.qos.logback.** { *; }

-dontwarn org.slf4j.**
-keep class org.slf4j.** { *; }

# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn't save them.
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
    public void set*(***);
    public *** get*();
    <fields>;
}

# Amazon AWS S3 ----------------------
# Class names are needed in reflection
-keepnames class com.amazonaws.**
# Request handlers defined in request.handlers
-keep class com.amazonaws.services.**.*Handler
# The following are referenced but aren't required to run
-dontwarn com.fasterxml.jackson.**
#-dontwarn org.apache.commons.logging.**
# Android 6.0 release removes support for the Apache HTTP client
#-dontwarn org.apache.http.**
# The SDK has several references of Apache HTTP client
-dontwarn com.amazonaws.http.**
-dontwarn com.amazonaws.metrics.**
# Amazon AWS S3 ----------------------

# Support design
-dontwarn android.support.design.**
-keep class android.support.design.** { *; }
-keep interface android.support.design.** { *; }
-keep public class android.support.design.R$* { *; }

# App compat
-keep public class android.support.v7.widget.** { *; }
-keep public class android.support.v7.app.** { *; }
-keep public class android.support.v7.internal.widget.** { *; }
-keep public class android.support.v7.internal.view.menu.** { *; }

-keep public class * extends android.support.v4.view.ActionProvider {
    public <init>(android.content.Context);
}
-keep class android.support.v7.widget.RoundRectDrawable { *; }

# picasso
-dontwarn com.squareup.okhttp.**
-优化过程3
-keep public class*扩展android.app.Activity
-keep public class*扩展android.app.Application
-keep public class*扩展了android.app.Service
-keep public class*扩展了android.content.BroadcastReceiver
-keep public class*扩展了android.content.ContentProvider
-keep public class*扩展了android.preference.preference
-保持公共类com.android.vending.billing.iiInAppBillingService
-keepattributes源文件,LineNumberTable
-keep public class*扩展了android.view.view{
public(android.content.Context);
public(android.content.Context、android.util.AttributeSet);
public(android.content.Context,android.util.AttributeSet,int);
}
-keepclassswithmembers类*{
public(android.content.Context、android.util.AttributeSet);
}
-keepclassswithmembers类*{
public(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembers类*扩展了android.content.Context{
public void*(android.view.view);
public void*(android.view.MenuItem);
}
-keep public class*扩展android.app.Activity
-keep public class*扩展了android.support.v7.app.AppActivity
-keep public class*扩展了android.support.v4.app.Fragment
-keep public class*扩展android.app.Application
-keep public class*扩展了android.app.Service
-keep public class*扩展了android.app.IntentService
-dontwarn com.google.appengine.api.urlfetch**
-dontwarn rx**
-dontwarn改装**
-保留署名
-keepattributes*注释*
-保持类com.squareup.okhttp.*{*;}
-保持接口com.squareup.okhttp.*{*;}
-保持类更新。**{*;}
-keepclassswithmembers类*{
@http.*;
}
-保持类com.google.*{*;}
#-保持类org.apache.*{*;}
#-保留类android.support.*{*;}
-保持类com.makeramen.*{*;}
-dontwarn android.net.http.AndroidHttpClient
-dontwarn com.google.android.gms**
#如果未使用IAP,则抑制警告:
-dontwarn com.google**
#-dontwarn org.apache**
-dontwarn com.makeramen**
-dontwarn android.support**
-保留署名
#用于使用GSON@Expose注释
-keepattributes*注释*
#Gson特定类
-保持类sun.misc.Unsafe{*;}
##------谷歌播放服务------------------
-keep class*扩展了java.util.ListResourceBundle{
受保护对象[][]getContents();
}
-保持公共类com.google.android.gms.common.internal.safeparcel.SafeParcelable{
公共静态最终***空;
}
-keepnames@com.google.android.gms.common.annotation.KeepName类*
-keepclassmembernames类*{
@com.google.android.gms.common.annotation.KeepName*;
}
-keepnames类*实现android.os.Parcelable{
公共静态最终**创建者;
}
##------对于本机方法---------------------
-KeepClassSwithMemberNames类*{
本地人;
}
#------维护在XML布局上使用的自定义组件名称---------------
-keepclassmembers公共类*扩展了android.view.view{
无效集*(***);
***得到*();
}
##------保留通用信息---------------
-keepattributes签名,*注释*,封闭方法
-保持类sun.misc.Unsafe{*;}
##------保留自定义组件--------------------
-keep public class*扩展了android.view.view{
public(android.content.Context、android.util.AttributeSet);
}
-keep public class*扩展了android.view.view{
public(android.content.Context,android.util.AttributeSet,int);
}
##------我们希望在活动中保留可以在XML属性onClick中使用的方法-------------
-keepclassmembers类*扩展了android.app.Activity{
public void*(android.view.view);
}
##------------有关枚举类,请参见http://proguard.sourceforge.net/manual/examples.html#enumerations -------------
-keepclassmembers枚举*{
公共静态**[]值();
公共静态**valueOf(java.lang.String);
}
##------------保留可打包类(序列化-反序列化通过意图发送的对象)-------------
-keep class*实现android.os.Parcelable{
公开静态最终android.os.Parcelable$Creator*;
}
##------保留R.java文件---------------
-keepclassmembers类**.R$*{
公共静态;
}
##---------------Begin:Bean类的proguard配置----------
#-保持公共类com.nektapp.datamodels.*{*;}
#-保持公共类com.nektapp.matcher.model.*{*;}
##----------从libs文件夹中保留外部jar-----------------
-图书馆馆藏
##-libraryjars libs/universal-image-loader-1.9.3.jar
##-libraryjars libs/dropbox-sync-sdk-android.jar
##-libraryjars libs/gson-2.3.1.jar
##-libraryjars libs/HockeySDK-3.0.2.jar
##-libraryjars libs/jackson-core-asl-1.9.7.jar
##-libraryjars libs/jackson-mapper-asl-1.9.7.jar
##-libraryjars libs/logback-android-1.0.10-2.jar
##-libraryjars libs/slf4j-api-1.7.5.jar
##-dontwarn org.codehaus.jackson**
##-保持类org.codehaus.jackson.*{*;}
-dontwarn ch.qos.logback**
-保留类ch.qos.logback.*{*;}
-dontwarn org.slf4j**
-保持类org.slf4j.*{*;}
#显式保留所有序列化成员。可序列化接口
#只是一个标记接口,因此无法保存它们。
-keepclassmembers类*实现java.io.Serializable{
静态最终长SerialVersionId;
私有静态final java.io.ObjectStreamField[]serialPersistentFields;
私有void writeObject(java.io.ObjectOutputStream);
私有void readObject(java.io.ObjectInputStream);
java.lang.Object WriterReplace();
java.lang.Object readResolve();
公共无效集*(***);
公众的
-optimizationpasses 5
-keepattributes SourceFile,LineNumberTable