【发布时间】:2018-02-07 06:59:09
【问题描述】:
我在发布版本中启用 proguard 时遇到了这个问题。
信息:Gradle 任务 [:app:assembleRelease] 警告:com.google.maps.android.kml.KmlRenderer$1:在程序类 com.google.maps.android.R$id 中找不到引用的字段“int window”
警告:对程序类成员有 1 个未解决的引用。
Warning:Exception while processing task java.io.IOException: 请先更正上述警告。 错误:任务“:app:transformClassesAndResourcesWithProguardForRelease”执行失败。 作业失败,请参阅日志了解详细信息 信息:构建失败 信息:总时间:26.457 秒 信息:1个错误 信息:3 个警告 信息:在控制台中查看完整的输出
我的 Proguard 设置规则如下所示。
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
-dontwarn io.card.**
##############################################
#Okio Rules
##############################################
-dontwarn okio.**
-keep class okio.** { *; }
##############################################
#Picasso
##############################################
-dontwarn com.squareup.picasso.**
-dontwarn com.squareup.okhttp.**
-dontwarn javax.annotation.**
##############################################
#otto
##############################################
-keepattributes *Annotation*
-keepclassmembers class ** {
@com.squareup.otto.Subscribe public *;
@com.squareup.otto.Produce public *;
}
###############################################
#Retrofit rules
###############################################
# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions
###################################################
#Active android
###################################################
-keep class com.activeandroid.** { *; }
-keep class com.activeandroid.**.** { *; }
-keep class * extends com.activeandroid.Model
-keep class * extends com.activeandroid.serializer.TypeSerializer
-keep class com.example.model.** { *; }
-keepclasseswithmembers class com.jombay.vger.rx.resources.** {
<init>(...);
public void set*(***);
public *** get*();
}
-keepclasseswithmembers public class com.jombay.vger.retrofit.resources.** {
public protected private <init>(...);
public void set(*);
public ** get*();
}
-keepclasseswithmembers public class com.jombay.vger.utils.** {
public protected private <init>(...);
}
-keepclassmembers class * {
@org.codehaus.jackson.annotate.* *;
}
-keep class com.fasterxml.jackson.databind.ObjectMapper {*;}
-keep class com.fasterxml.jackson.databind.ObjectWriter {*;}
-keepattributes InnerClasses
-dontskipnonpubliclibraryclassmembers
-keepclassmembers class * {
@com.fasterxml.jackson.annotation.JsonCreator *;
@com.fasterxml.jackson.annotation.JsonProperty *;
}
-dontskipnonpubliclibraryclassmembers
################################################
#Logs
################################################
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
public static *** wtf(...);
}
###################################################
#Google
###################################################
-keep class com.google.analytics.** { *; }
-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**
【问题讨论】:
-
向下警告
com.google.maps.android.kml.KmlRenderer这可能有效 -
错误仍然存在
标签: java android apk android-proguard