proguard - 构建apk时,花费了太长时间..因为“:app:transformClassesAndResourcesWithProguardForDebug”
问题描述
我正在申请一个proguard。
应用程序很大,但是 apk 构建耗时太长。
(:app:transformClassesAndResourcesWithProguardForDebug 1h 15m 48s 816ms)
最后我不得不停下来。
我的“proguard-rules”如下,我想知道原因。
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-dontoptimize
-dontpreverify
-dontshrink
-keepattributes *Annotation*
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keepattributes Exceptions,InnerClasses,Deprecated,EnclosingMethod
-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.app.backup.BackupAgent
-keep public class * extends android.preference.Preference
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Fragment
-libraryjars libs
-keepclasseswithmembernames class * {
native <methods>;
}
-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);
public void set*(...);
}
-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.app.Activity {
public void *(android.view.View);
}
-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>;
}
-dontwarn android.support.**
-keepclassmembers class * {
@com.google.api.client.util.Key <fields>;
}
-keep class com.google.api.services.*.model.*
-keep class com.google.api.client.**
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
-dontwarn com.google.common.collect.MinMaxPriorityQueue
-dontobfuscate
-dontwarn com.google.android.analytics.**
-dontwarn com.google.common.**
-keep class com.google.common.collect.MapMakerInternalMap$ReferenceEntry
-keep class com.google.common.cache.LocalCache$ReferenceEntry
-keep class com.google.analytics.tracking.android.CampaignTrackingReceiver
-keep class * extends java.util.ListResourceBundle {
protected java.lang.Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keep class com.google.android.gms.** { *;}
-keep class com.google.gson.** { *;}
-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;
}
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep class com.crashlytics.** { *; }
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
-keep class com.android.volley.** { *; }
-keep interface com.android.volley.** { *; }
-keep class org.apache.commons.logging.Log
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-keep class com.kbeanie.** { *; }
-keep class com.sromku.simple.fb.** {
*;
}
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.facebook.** { *; }
-keep class io.card.** { *; }
-keep class com.androidquery.** { *; }
-keep class pl.tajchert.buswear.** { *; }
-keep class pl.tajchert.buswear.wear.** { *; }
-keep class com.viewpagerindicator.** {*; }
-dontwarn com.squareup.okhttp.**
-dontwarn okio.**
-keep class com.squareup.** {*; }
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
-keep class com.kakao.** { *; }
-keepattributes Signature
-keepclassmembers class * {
public static <fields>;
public *;
}
-dontwarn android.support.v4.**
-dontwarn com.ning.http.client.**
-dontwarn org.jboss.netty.**
-dontwarn org.slf4j.**
-dontwarn com.fasterxml.jackson.databind.**
-dontwarn com.google.android.gms.**
-keep class sun.misc.Unsafe { *; }
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-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();
}
-keepclassmembers class com.samsung.** { *; }
-keep class com.samsung.** { *; }
-dontwarn com.samsung.**
-keep class myApp.** { *; }
-dontwarn io.airbridge.**
-keep class io.airbridge.** {*;}
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class bo.app.** { *; }
-keep class com.appboy.** { *; }
-dontwarn kotlin.**
-keepnames class com.google.android.gms.common.GoogleApiAvailability
-dontwarn com.appsflyer.**
-dontwarn com.android.installreferrer
-keep public class com.google.firebase.iid.FirebaseInstanceId {
public *;
}
-keep public class com.google.android.gms.iid.InstanceID {
public *;
}
并且应用程序内部有很多未解决的资源。
帮助..
解决方案
自我回答
我只是希望完成应用程序构建。我可以写“不要警告**”。
然后我可以看到proguard的优化性能。
写完“dontwarn **”后,检查每个类。
我希望这些愚蠢的问题和答案会对你有所帮助。:)
推荐阅读
- javascript - 当 nextTick 不起作用时,如何让 Vue 从 .vue 文件中立即更新实际的 DOM?
- wpf - WPF - XAML - DataGridRow 样式触发器 IsMouseOver 工具提示数据绑定
- c - 将条件语句定义为变量
- c# - 嵌套异步导致 HttpContext Null
- python - 从 URL 内容中拆分文本
- java - Android GPS 定位未发现问题。如何更正此代码
- powershell - 连接 Select-Object 语句中的两个属性
- python - ansible 动态库存错误
- sql-server - Microsoft SQL Server 外键依赖项使用 sp_MSdependencies 显示,但未在 sys.foreign_keys 中列出
- google-compute-engine - Google Cloud Bigtable 的性能调优技巧