parse.com在proguard之后没有工作

时间:2015-07-05 13:13:58

标签: android parse-platform proguard android-proguard

我在我的应用程序中使用Parse.com功能,一切都在调试模式下运行良好。 一旦我在发布模式下生成一个已签名的apk,我就会在打开我的应用程序时开始等待,最长可达10秒。 最有可能是因为Parse.com尝试初始化并联系其服务器,这显然不成功。

此外,parse.com停止工作我知道,因为没有数据会上传到我的帐户。

Proguard当然应该有问题,因为调试和发布模式之间的唯一区别就是启用proguard,就我而言。

我还试图在我的proguard规则中使用以下代码来保持com.parse:

 #keep parse classes
-keepattributes Annotation,SourceFile,LineNumberTable
-dontwarn com.parse.**
-keep class com.parse.* { *; }
-keep class com.parse.** { *; }

任何帮助将不胜感激!

编辑:

我发现在Proguard之后Parse.initialize()发生了巨大的内存泄漏......但仍然不知道为什么! 当然,当proguard关闭时,这个内存泄漏不存在 enter image description here

3 个答案:

答案 0 :(得分:1)

如果您拥有Apache http-corehttp-mime以及Parse库,请尝试以下操作:

-keep class org.apache.** { *; }
-keep class com.parse.** { *; }

-dontwarn com.parse.**
-dontwarn org.apache.**
-dontwarn com.squareup.**

答案 1 :(得分:0)

为com.fasterxml.jackson添加如下      - 上课     com.fasterxml.jackson.databind。     ObjectMapper {        上市 ;        受保护的     }      - 上课     com.fasterxml.jackson.databind。     ObjectWriter {         public ** writeValueAsString(**);     }

答案 2 :(得分:0)

显然问题是Parse.com库中的一些ANR,正是当它试图读取现金来同步先前未同步的数据或类似的东西时。

enter image description here

这是由于优化而发生的,因为

-dontoptimize
在proguard设置中的

参数问题已经解决,虽然这不是一个好主意,但我认为应该有一种方法可以阻止proguard优化这个库。尽管我能找到的只是这个参数:

# keep parse classes
#-dontwarn com.parse.**
-keep class com.parse.** { *; }
-keep interface com.parse.** { *; }

#-dontwarn org.apache.**
-keep class org.apache.** { *; }
-keep interface org.apache.** { *; }

#-dontwarn com.squareup.**
-keep class com.squareup.** { *; }
-keep interface com.squareup.** { *; }

-keep class com.shygunsys.pocketcyber.techicalservices.parse.**



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

通过互联网和SO来阻止Proguard优化parse.com库和解析使用的已知库,但正如我之前所说的,没有-dontoptimize没有运气 无论如何,如果我从Parse.com开发人员和/或Proguard家伙那里听到回答这个问题的话,我会很高兴