2015-07-05 28 views
1

我在我的應用程序中使用Parse.com功能,在調試模式下一切正常。 只要我在釋放模式下生成已簽名的apk,在打開我的應用程序開始時,我有時會等待10秒。 很可能是因爲Parse.com嘗試初始化並聯系其服務器,這顯然不成功。parse.com在proguard後無法工作

而且,parse.com停止工作我知道,因爲沒有數據會上傳到我的帳戶。

當然,Proguard應該有一個問題,因爲調試和發佈模式之間的唯一區別是啓用proguard,就我而言。

我也triend保持com.parse與下面的代碼在我的ProGuard規則:

#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

+0

我的問題是關於Apache'http-core'和'http-mime',你有和我一樣的庫嗎?如果是這樣,那麼就試着讓他們成爲'-twtwarn'和'-keep class'。 – iSun

+0

@iSun或許我的也應該是一樣的,你能否給我準確的線添加到proguad? –

+0

當然,請檢查我的答案。 – iSun

回答

0

爲com.fasterxml.jackson添加下面 -keep類 com.fasterxml.jackson.databind此內存泄漏是不存在。 ObjectMapper { public; 受保護; } -keep class com.fasterxml.jackson.databind。對象寫者{ public ** writeValueAsString(**); }

+0

得到這個錯誤:'proguard.ParseException:期望在'ObjectMapper'處打開'{' –

+0

轉換到這個'-keep類com.fasterxml.jackson.databind.ObjectMapper { public ; 保護; } -keep class com.fasterxml.jackson.databind.ObjectWriter { public ** writeValueAsString(**); } '通過了proguard錯誤,但主要問題依然存在!不幸的是, –

1

請嘗試以下,如果你有阿帕奇http-corehttp-mimeParse庫一起:

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

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

沒有幫助! 我發現一個巨大的內存泄漏發生在Proguard之後的Parse.initialize()...仍然不知道爲什麼! –

+0

@MuhammadNaderi你有沒有力量關閉或ANR?如果是這樣,請編輯您的問題併發布您的logcat。 – iSun

+0

沒有,只有一個白色的凍結屏幕長達10秒,之後,應用程序正常工作。即使Parse.com工作正常,但10秒的白色屏幕是不可接受的, 方法打樣顯示這是因爲'com.parse.ParseCommandCache.maybeRunAllCommandsNow' 這是在proguard關閉時立即完成 –

0

顯然的問題是一些ANR在Parse.com庫,正是時候,它會讀取其現金同步以前未同步的數據或類似的東西。

enter image description here

出現這種情況是由於優化,因爲在ProGuard的設置問題解決

-dontoptimize 

參數,雖然這不是一個好主意,我想,應該有一個辦法從優化眼前這個library.Although停止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(**); 
} 

在互聯網上,因此T o防止Proguard優化parse.com庫和解析使用的已知庫,但正如我之前所說的,沒有-dontoptimize 任何運氣,如果我聽到Parse.com開發人員和/或Proguard人員的回覆,會很高興其錯誤是這樣的