我在我的应用程序中使用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关闭时,这个内存泄漏不存在
答案 0 :(得分:1)
如果您拥有Apache http-core
和http-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,正是当它试图读取现金来同步先前未同步的数据或类似的东西时。
这是由于优化而发生的,因为
-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家伙那里听到回答这个问题的话,我会很高兴