【问题标题】:Proguard setup errorProguard 设置错误
【发布时间】: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


【解决方案1】:

看起来 KmlRenderer 类中的内部类试图访问生成的类 com.google.maps.android.R$id 中不存在的字段。使用更新版本的谷歌地图库可能会解决该错误。

您也可以使用

禁用警告
-dontwarn com.google.maps.android.kml.KmlRenderer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多