【问题标题】:proguard issue in GradleGradle中的proguard问题
【发布时间】:2015-10-30 05:54:14
【问题描述】:

我正在尝试构建我的应用程序我收到以下错误:一直以来,应用程序都用于正确生成构建。

在我将 compileSdkVersion 和 build 升级到 23、GMS 到 8.1、AsyncHttpclient 到 1.4.9 之后。我收到以下错误。

不知道该怎么办:

  Warning:com.google.android.gms.internal.zzac: can't find referenced class android.net.http.AndroidHttpClient
    Warning:com.google.android.gms.internal.zzw: can't find referenced method 'void addHeader(java.lang.String,java.lang.String)' in program class com.google.android.gms.internal.zzw$zza
    Warning:com.google.android.gms.internal.zzw$zza: can't find referenced method 'void setURI(java.net.URI)' in program class com.google.android.gms.internal.zzw$zza
    Warning:there were 2 unresolved references to classes or interfaces.
             You may need to add missing library jars or update their versions.
             If your code works fine without the missing classes, you can suppress
             the warnings with '-dontwarn' options.
             (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
    Warning:there were 2 unresolved references to program class members.
             Your input classes appear to be inconsistent.
             You may need to recompile the code.
             (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
    :app:proguardRelease FAILED
    Error:Execution failed for task ':app:proguardRelease'.
    > java.io.IOException: Please correct the above warnings first.

这里有什么问题?

【问题讨论】:

  • 您可能需要查看您的 proguard 并为 AsyncHttpclient 库添加任何新命令。
  • 你是否在proguard中添加了必要的dontwarn命令?
  • @Shvet:不确定不警告部分是什么?正如我在它工作之前所说的那样。这是在更新之后出现的。我怎么知道我应该添加什么?
  • @user5287166 你把minifyEnabled false 设为真了吗?你什么时候更新 gradle?
  • 不是和this question类似吗?

标签: android android-proguard


【解决方案1】:

如果您还没有在 progruard 中添加命令,请添加。

-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }

如果您使用的是地图,您应该查看开发者网站。里面已经有proguard了。

对于地图,您可能需要添加以下代码。如果你还没有添加。

# The Maps API uses custom Parcelables.
# Use this rule (which is slightly broader than the standard recommended one)
# to avoid obfuscating them.
-keepclassmembers class * implements android.os.Parcelable {
    static *** CREATOR;
}

# The Maps API uses serialization.
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    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();
}

-dontwarn com.google.android.maps.GeoPoint
-dontwarn com.google.android.maps.MapActivity
-dontwarn com.google.android.maps.MapView
-dontwarn com.google.android.maps.MapController
-dontwarn com.google.android.maps.Overlay
-dontwarn com.google.android.gms.maps.model.*

【讨论】:

    猜你喜欢
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多