【发布时间】:2015-06-06 08:55:00
【问题描述】:
我在一个项目中使用 Parse。该项目使用我自己的 Android 库项目,其中包含 Parse jar。当我尝试生成签名的 apk 时,gradle 会出现以下问题:
:exampleApp:proguardRelease 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 超类或接口 com.squareup.okhttp.RequestBody 警告: com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.OkHttpClient 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.OkHttpClient 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.OkHttpClient 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.OkHttpClient 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.OkHttpClient 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.OkHttpClient 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.OkHttpClient 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.OkHttpClient 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Call 警告:com.parse.ParseOkHttpClient:不能 找到引用的类 com.squareup.okhttp.Response 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Response 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.ResponseBody 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.ResponseBody 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Response 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Response 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Request$Builder 警告:com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Call 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.ResponseBody 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Request 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.OkHttpClient 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Call 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Response 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Call 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Call 警告:com.parse.ParseOkHttpClient:不能 找到引用的类 com.squareup.okhttp.Response 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Response 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Request 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Request$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers$Builder 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Headers 警告:com.parse.ParseOkHttpClient: 找不到引用的类 com.squareup.okhttp.Request 警告: com.parse.ParseOkHttpClient:找不到引用的类 com.squareup.okhttp.Response 警告:com.parse.ParseOkHttpClient$1: 找不到引用的类 com.squareup.okhttp.Call 警告: com.parse.ParseOkHttpClient$1:找不到引用的类 com.squareup.okhttp.Call 警告:com.parse.ParseOkHttpClient$1:不能 找到引用的类 com.squareup.okhttp.Call 警告: com.parse.ParseOkHttpClient$1:找不到引用的类 com.squareup.okhttp.Call 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 com.squareup.okhttp.RequestBody 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 com.squareup.okhttp.MediaType 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 okio.BufferedSink 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 com.squareup.okhttp.RequestBody 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 com.squareup.okhttp.MediaType 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 okio.BufferedSink 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 com.squareup.okhttp.MediaType 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 okio.BufferedSink 警告: com.parse.ParseOkHttpClient$CountingOkHttpRequestBody: 找不到 引用类 okio.BufferedSink 警告:有 67 个未解决 对类或接口的引用。 您可能需要添加缺少的库 jar 或更新它们的版本。 如果您的代码在没有丢失类的情况下工作正常,您可以抑制 带有“-dontwarn”选项的警告。 (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) :exampleApp:proguardRelease 失败
FAILURE:构建失败并出现异常。
编辑: 根据@karama 的建议,我将此添加到我的 proguard 规则中:
-keepattributes *Annotation*
-keepattributes Signature
-dontwarn com.squareup.**
-keep class com.squareup.** { *; }
-dontwarn com.parse.ParseOkHttpClient**
-keep class com.parse.ParseOkHttpClient** { *; }
# Proguard configuration for Jackson 2.x (fasterxml package instead of codehaus package)
-keep class com.fasterxml.jackson.databind.ObjectMapper {
public <methods>;
protected <methods>;
}
-keep class com.fasterxml.jackson.databind.ObjectWriter {
public ** writeValueAsString(**);
}
-dontwarn org.w3c.dom.bootstrap.DOMImplementationRegistry
然而,现在我得到以下信息:
警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:com.fasterxml.jackson.databind.ext.DOMSerializer:找不到 引用类 org.w3c.dom.bootstrap.DOMImplementationRegistry 警告:有 5 个未解析的类或接口引用。
如果我通过添加来修复它: -dontwarn org.w3c.dom.bootstrap.DOMImplementationRegistry 当应用程序运行时,它会崩溃。我在这里看到了这个问题,但没有解决:https://stackoverflow.com/a/11249755/197127
使用 -dontobfuscate 运行应用程序可以正常工作。
【问题讨论】:
标签: android parse-platform proguard