首页 文章

使用ProGuard轻松破解

提问于
浏览
0

我的应用程序正常工作 without ProGuard,即minifyEnabled为false

但是当我将minifyEnabled变为 true 时,应用程序开始崩溃 .

我使用的是Android Studio(v1.4.1)和Gradle(com.android.tools.build:gradle:1.3.0)

Note: I have placed Smack Jar in /libs folder

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) 

1 回答

  • 1

    好吧,我找到了答案,为Smack Library添加了以下规则

    proguard-rules.pro

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

相关问题