我在一个项目上使用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:找不到引用class com.squareup.okhttp.OkHttpClient Wa rning: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.ParseOkHt tpClient:找不到引用类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.pa rse.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.Parse OkHttpClient:找不到引用的类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:can找不到引用类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.pars e.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 Warnin g: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:can'找到引用类okio.BufferedSink警告:com.parse.ParseOkHttpClient $ CountingOkHttpRequestBody:找不到引用的类okio.BufferedSink警告:有67个未解析的类或接口引用 . 您可能需要添加缺少的库jar或更新其版本 . 如果您的代码在没有缺少类的情况下正常工作,则可以使用“-dontwarn”选项来禁止警告 . (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass):exampleApp:proguardRelease FAILED 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运行应用程序正常 .
1 回答
该错误不是解析sdk,因为okHttp而发生 . 在你的proguard中添加以下行 .
Edit
对于com.fasterxml.jackson,请添加以下代码:
参考:https://github.com/krschultz/android-proguard-snippets/issues/19