2015-11-10 2 views
0

Моего приложения работает отлично без ProGuard, то есть с minifyEnabled ложныхСмак сбоев с ProGuard

Но когда я включаю minifyEnabled к истинной, приложение начинает врезаться.

Я использую Android Studio (v1.4.1) и Gradle (com.android.tools.build:gradle:1.3.0)

Примечание: Я поместил Смак Jar в/папку ЛИЭС

build.gradle

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:23.1.0'//23.0.1 
    compile 'com.android.support:design:23.1.0'//23.0.1 

    //_____________3rd party 
    compile 'joda-time:joda-time:2.8.2' 
    compile 'org.jxmpp:jxmpp-core:0.4.1' 
    compile 'org.jxmpp:jxmpp-util-cache:0.4.1' 
    compile 'de.measite.minidns:minidns:0.1.1' 
    compile 'org.apache.httpcomponents:httpcore:4.3.2' 
    compile 'org.apache.httpcomponents:httpmime:4.3.5' 

    //_____________library jars 
    compile files('libs/smack-core-4.1.2-sources.jar') 
    compile files('libs/smack-android-4.1.2.jar') 
    compile files('libs/smack-extensions-4.1.2.jar') 
    compile files('libs/smack-im-4.1.2.jar') 
    compile files('libs/smack-sasl-provided-4.1.2.jar') 
    compile files('libs/smack-tcp-4.1.2.jar') 

    android { 
    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES.txt' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/notice.txt' 
     exclude 'META-INF/license.txt' 
     exclude 'META-INF/dependencies.txt' 
     exclude 'META-INF/LGPL2.1' 
     } 
     useLibrary 'org.apache.http.legacy' 
    } 
} 

proguard-rules.pro

#org.jxmpp 
-keep class org.jxmpp.** { *; } 
#minidns 
-keep class de.measite.minidns.** { *; } 
#http 
-keep class org.apache.http.** { *; } 
#smack4.1 
-keep class org.jivesoftware.** { *; } 

StackTrace:

11-10 16:32:35.685 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
11-10 16:32:35.685 E/AndroidRuntime: Process: com.thesendapp, PID: 7308 
11-10 16:32:35.685 E/AndroidRuntime: java.lang.RuntimeException: An error occured while executing doInBackground() 
11-10 16:32:35.685 E/AndroidRuntime:  at android.os.AsyncTask$3.done(AsyncTask.java:304) 
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
11-10 16:32:35.685 E/AndroidRuntime:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
11-10 16:32:35.685 E/AndroidRuntime:  at java.lang.Thread.run(Thread.java:818) 
11-10 16:32:35.685 E/AndroidRuntime: Caused by: java.lang.ExceptionInInitializerError 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.PrivacyListManager.<init>(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.PrivacyListManager.getInstanceFor(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.PrivacyListManager$1.connectionCreated(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.initConnection(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smack.AbstractXMPPConnection.connect(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at isol.services.h.a(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at isol.services.h.doInBackground(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at android.os.AsyncTask$2.call(AsyncTask.java:292) 
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
11-10 16:32:35.685 E/AndroidRuntime:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)  
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
11-10 16:32:35.685 E/AndroidRuntime:  at java.lang.Thread.run(Thread.java:818)  
11-10 16:32:35.685 E/AndroidRuntime: Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smack.filter.FlexibleStanzaTypeFilter.<init>(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.filter.SetActiveListFilter.<init>(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.filter.SetActiveListFilter.<clinit>(Unknown Source) 
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.PrivacyListManager.<init>(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.PrivacyListManager.getInstanceFor(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smackx.privacy.PrivacyListManager$1.connectionCreated(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.initConnection(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at org.jivesoftware.smack.AbstractXMPPConnection.connect(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at isol.services.h.a(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at isol.services.h.doInBackground(Unknown Source)  
11-10 16:32:35.685 E/AndroidRuntime:  at android.os.AsyncTask$2.call(AsyncTask.java:292)  
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
11-10 16:32:35.685 E/AndroidRuntime:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)  
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
11-10 16:32:35.685 E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
11-10 16:32:35.685 E/AndroidRuntime:  at java.lang.Thread.run(Thread.java:818)  
+0

вы пробовали это? http://stackoverflow.com/questions/17824704/does-not-work-when-use-proguard –

ответ

0

Ну, я нашел ответ, Добавить следующие правила для Смак библиотеки

proguard-rules.pro

-keepattributes Signature 
-keep class org.jivesoftware.smack.** { *; } 
-keep class org.jivesoftware.smackx.** { *; }