混淆后Android崩溃

时间:2016-07-23 11:48:03

标签: android proguard

我制作了一个应用程序,工作正常但是在混淆之后崩溃并且不明白为什么。

以下是我的计划规则:

-dontwarn com.fasterxml.jackson.databind.ext.DOMSerializer
-dontwarn com.fasterxml.jackson.databind.ext.PathDeserializer
-dontwarn com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector$Java7Support
-dontwarn com.squareup.picasso.OkHttpDownloader
-dontwarn okio.DeflaterSink
-dontwarn okio.Okio
-dontwarn org.androidannotations.api.rest.RestClientHeaders
-dontwarn org.bouncycastle.jce.provider.X509LDAPCertStoreSpi
-dontwarn org.bouncycastle.util.AllTests
-dontwarn org.bouncycastle.util.io.pem.AllTests
-dontwarn org.bouncycastle.x509.util.LDAPStoreHelper
-dontwarn org.slf4j.LoggerFactory
-dontwarn org.slf4j.MDC
-dontwarn org.androidannotations.api.rest.RestClientSupport
-dontwarn org.androidannotations.api.rest.RestErrorHandler
-dontwarn retrofit2.Platform$Java8
-dontwarn org.slf4j.MarkerFactory

-injars      libs
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider

-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.content.Context {
   public void *(android.view.View);
   public void *(android.view.MenuItem);
}

-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties

这里的日志说:

07-23 14:43:12.534 6635-6635/advisor E/CrashlyticsCore: Failed to execute task.
                                                                                java.util.concurrent.TimeoutException
                                                                                    at java.util.concurrent.FutureTask.get(FutureTask.java:177)
                                                                                    at bin.a(Unknown Source)
                                                                                    at bit.uncaughtException(Unknown Source)
                                                                                    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
                                                                                    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)


                                                                                --------- beginning of crash
07-23 14:43:12.538 6635-6635/advisor E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: advisor, PID: 6635
                                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{advisor/activities.WelcomeActivity_}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replace(java.lang.CharSequence, java.lang.CharSequence)' on a null object reference
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                                   at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                   at android.os.Looper.loop(Looper.java:148)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5422)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replace(java.lang.CharSequence, java.lang.CharSequence)' on a null object reference
                                                                                   at cza.c(Unknown Source)
                                                                                   at cza.b(Unknown Source)
                                                                                   at cyt.a(Unknown Source)
                                                                                   at titaniumsoft.com.engage.activities.WelcomeActivity.onCreate(Unknown Source)
                                                                                   at titaniumsoft.com.engage.activities.WelcomeActivity_.onCreate(Unknown Source)
                                                                                   at android.app.Activity.performCreate(Activity.java:6251)
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                                   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:148) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5422) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

仍然没有得到什么问题。在上面提到的类中,我不使用替换方法。

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Appsee.start(BuildConfig.APPSEE);
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

        if (userPrefs.isLoggedIn().get()) {
            Intent intent = CommunityActivity_.launcher(WelcomeActivity.this);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
        } else if (userPrefs.isPasswordSent().get()) {
            startActivity(CodeEntryActivity.launcher(WelcomeActivity.this));
        } else {
            DaoService.clearDatabase();
            PermissionListener permissionlistener = new PermissionListener() {
                @Override
                public void onPermissionGranted() {
                }

                @Override
                public void onPermissionDenied(ArrayList<String> deniedPermissions) {
                }
            };

            if (BuildConfig.ADVISOR) {
                new TedPermission(this)
                        .setPermissionListener(permissionlistener)
                        .setPermissions(Manifest.permission.READ_SMS, Manifest.permission.CAMERA, Manifest.permission.READ_CONTACTS, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        .check();
            } else {
                new TedPermission(this)
                        .setPermissionListener(permissionlistener)
                        .setPermissions(Manifest.permission.READ_SMS, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        .check();
            }
        }
        UIUtils.flagsLayoutWasOpened = false;
    }

0 个答案:

没有答案