2

我在我的应用程序中使用 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 关闭时,这种内存泄漏是不存在的 在此处输入图像描述

4

3 回答 3

1

http-core如果您有 Apache和库http-mime,请尝试以下操作Parse

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

-dontwarn com.parse.**
-dontwarn org.apache.**
-dontwarn com.squareup.**
于 2015-07-06T09:26:06.613 回答
0

对于 com.fasterxml.jackson 在下面添加 -keep 类 com.fasterxml.jackson.databind。对象映射器 { 公共 ; 受保护;} -keep 类 com.fasterxml.jackson.databind。ObjectWriter { public ** writeValueAsString(**); }

于 2015-07-05T13:21:41.477 回答
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(**);
}

通过 Internet 和 SO 以防止 Proguard 优化 parse.com 库和解析使用的已知库,但正如我之前所说,没有-dontoptimize 任何方法都没有运气,如果我收到 Parse.com 开发人员和/或 Proguard 的回复,我会很高兴伙计们看看这是谁的错误

于 2015-07-07T05:07:32.967 回答