首页 文章

使用Parse.com的Android - 在Proguard上缺少课程

提问于
浏览
2

我在一个项目上使用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 回答

  • 4

    该错误不是解析sdk,因为okHttp而发生 . 在你的proguard中添加以下行 .

    -keepattributes *Annotation*
    -keepattributes Signature
    -dontwarn com.squareup.**
    -keep class com.squareup.** { *; }
    

    Edit

    对于com.fasterxml.jackson,请添加以下代码:

    -keep class com.fasterxml.jackson.databind.ObjectMapper {
        public <methods>;
        protected <methods>;
    }
    -keep class com.fasterxml.jackson.databind.ObjectWriter {
        public ** writeValueAsString(**);
    }
    

    参考:https://github.com/krschultz/android-proguard-snippets/issues/19

相关问题