鍍金池/ 問(wèn)答/Java  Android/ android app連續(xù)閃退打不開(kāi),無(wú)法捕獲

android app連續(xù)閃退打不開(kāi),無(wú)法捕獲

1,測(cè)試反饋app連續(xù)閃退, 一打開(kāi)就閃退,無(wú)限循環(huán),可我明明已經(jīng)做了閃退3次就清數(shù)據(jù),閃退3次后根本沒(méi)清數(shù)據(jù),不知道是沒(méi)捕獲到還是什么
2,我有兩個(gè)問(wèn)題需要大家?guī)兔?,第一是什么?dǎo)致app連續(xù)閃退,第二,我明明寫(xiě)了Thread.UncaughtExceptionHandler捕獲代碼為什么沒(méi)捕獲到

以下是閃退后到日志:

11-21 10:37:24.101 1761-1761/? D/HeadsetPhoneState: Exit onSignalStrengthsChanged
11-21 10:37:26.983 3141-3141/? I/IgnoreTouchEvent: ignoreinputaction = false, x = 140.86957 , y = 1058.4487, pkg = com.smartisanos.launcher, wid = 35.0, slopex = 35.0, slopy = 24.0, timeout = 200.0
11-21 10:37:27.082 3141-3141/? I/IgnoreTouchEvent: ignore up event : x = 140.86957, ignore = false, ignoreUp = false, pkg = com.smartisanos.launcher
11-21 10:37:27.091 1325-18884/? I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.waimai.waimai/.activity.SplashActivity (has extras)} from uid 10018 on display 0
11-21 10:37:27.131 1325-1424/? I/IgnoreTouchEvent: ignoreTouchEvent onWindowAttached
11-21 10:37:27.141 1325-1746/? I/ActivityManager: Start proc 25535:com.waimai.waimai/u0a37 for activity com.waimai.waimai/.activity.SplashActivity
11-21 10:37:27.142 1325-1746/? V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@f7202db
11-21 10:37:27.180 3022-3022/? D/PILLS: GlobalBubbleManager : hideAllMailBubbles
11-21 10:37:27.181 3022-3022/? I/PILLS: BubbleController : bubble delay to gone already
                                        
                                        [ 11-21 10:37:27.182   536: 1653 D/         ]
                                        SurfaceMonitor closed!
11-21 10:37:27.208 25535-25535/? I/art: Waiting for a blocking GC AddRemoveAppImageSpace
11-21 10:37:27.209 25535-25535/? I/art: Starting a blocking GC AddRemoveAppImageSpace
11-21 10:37:27.226 25535-25535/? D/NetworkSecurityConfig: No Network Security Config specified, using platform default
11-21 10:37:27.229 25535-25535/? I/Sophix.LogTool:  setLogLevel valule: I
11-21 10:37:27.229 25535-25535/? I/Sophix.SophixManager:  Sophix 3.1.3 starting....
11-21 10:37:27.235 25535-25535/? I/System.out: oreo sophixmode = 0info = do not found any patch file to load.
11-21 10:37:27.235 25535-25535/? I/System.out: oreo sophix 其它錯(cuò)誤信息, 查看PatchStatus類(lèi)說(shuō)明
11-21 10:37:27.236 25535-25535/? I/MultiDex: VM with version 2.1.0 has multidex support
11-21 10:37:27.236 25535-25535/? I/MultiDex: install
11-21 10:37:27.236 25535-25535/? I/MultiDex: VM has multidex support, MultiDex support library is disabled.
11-21 10:37:27.247 25535-25535/? I/art: Rejecting re-init on previously-failed class java.lang.Class<com.orhanobut.hawk.Hawk$2>: java.lang.NoClassDefFoundError: Failed resolution of: Lrx/Observable$OnSubscribe;
11-21 10:37:27.247 25535-25535/? I/art:     at void com.waimai.waimai.widget.BaseApplication.onCreate() (BaseApplication.java:201)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1025)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5618)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1708)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.os.Looper.loop() (Looper.java:159)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6345)
11-21 10:37:27.247 25535-25535/? I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-21 10:37:27.247 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1096)
11-21 10:37:27.247 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:883)
11-21 10:37:27.247 25535-25535/? I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "rx.Observable$OnSubscribe" on path: DexPathList[[zip file "/data/app/com.waimai.waimai-1/base.apk"],nativeLibraryDirectories=[/data/app/com.waimai.waimai-1/lib/arm, /system/fake-libs, /data/app/com.waimai.waimai-1/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
11-21 10:37:27.247 25535-25535/? I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
11-21 10:37:27.247 25535-25535/? I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
11-21 10:37:27.247 25535-25535/? I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
11-21 10:37:27.247 25535-25535/? I/art:     at void com.waimai.waimai.widget.BaseApplication.onCreate() (BaseApplication.java:201)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1025)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5618)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1708)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.os.Looper.loop() (Looper.java:159)
11-21 10:37:27.247 25535-25535/? I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6345)
11-21 10:37:27.247 25535-25535/? I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-21 10:37:27.247 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1096)
11-21 10:37:27.247 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:883)
11-21 10:37:27.249 25535-25535/? I/art: Rejecting re-init on previously-failed class java.lang.Class<com.orhanobut.hawk.Hawk$1>: java.lang.NoClassDefFoundError: Failed resolution of: Lrx/Observable$OnSubscribe;
11-21 10:37:27.249 25535-25535/? I/art:     at void com.waimai.waimai.widget.BaseApplication.onCreate() (BaseApplication.java:201)
11-21 10:37:27.249 25535-25535/? I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1025)
11-21 10:37:27.249 25535-25535/? I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5618)
11-21 10:37:27.249 25535-25535/? I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
11-21 10:37:27.249 25535-25535/? I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1708)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.os.Looper.loop() (Looper.java:159)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6345)
11-21 10:37:27.250 25535-25535/? I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-21 10:37:27.250 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1096)
11-21 10:37:27.250 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:883)
11-21 10:37:27.250 25535-25535/? I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "rx.Observable$OnSubscribe" on path: DexPathList[[zip file "/data/app/com.waimai.waimai-1/base.apk"],nativeLibraryDirectories=[/data/app/com.waimai.waimai-1/lib/arm, /system/fake-libs, /data/app/com.waimai.waimai-1/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
11-21 10:37:27.250 25535-25535/? I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
11-21 10:37:27.250 25535-25535/? I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
11-21 10:37:27.250 25535-25535/? I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
11-21 10:37:27.250 25535-25535/? I/art:     at void com.waimai.waimai.widget.BaseApplication.onCreate() (BaseApplication.java:201)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1025)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5618)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1708)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.os.Looper.loop() (Looper.java:159)
11-21 10:37:27.250 25535-25535/? I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6345)
11-21 10:37:27.250 25535-25535/? I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-21 10:37:27.250 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1096)
11-21 10:37:27.250 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:883)
11-21 10:37:27.253 25535-25535/? I/art: Rejecting re-init on previously-failed class java.lang.Class<com.orhanobut.hawk.HawkBuilder$2>: java.lang.NoClassDefFoundError: Failed resolution of: Lrx/functions/Func0;
11-21 10:37:27.253 25535-25535/? I/art:     at com.orhanobut.hawk.HawkBuilder com.orhanobut.hawk.Hawk.init(android.content.Context) (Hawk.java:33)
11-21 10:37:27.253 25535-25535/? I/art:     at void com.waimai.waimai.widget.BaseApplication.onCreate() (BaseApplication.java:201)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1025)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5618)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1708)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.os.Looper.loop() (Looper.java:159)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6345)
11-21 10:37:27.253 25535-25535/? I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-21 10:37:27.253 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1096)
11-21 10:37:27.253 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:883)
11-21 10:37:27.253 25535-25535/? I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "rx.functions.Func0" on path: DexPathList[[zip file "/data/app/com.waimai.waimai-1/base.apk"],nativeLibraryDirectories=[/data/app/com.waimai.waimai-1/lib/arm, /system/fake-libs, /data/app/com.waimai.waimai-1/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
11-21 10:37:27.253 25535-25535/? I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
11-21 10:37:27.253 25535-25535/? I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
11-21 10:37:27.253 25535-25535/? I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
11-21 10:37:27.253 25535-25535/? I/art:     at com.orhanobut.hawk.HawkBuilder com.orhanobut.hawk.Hawk.init(android.content.Context) (Hawk.java:33)
11-21 10:37:27.253 25535-25535/? I/art:     at void com.waimai.waimai.widget.BaseApplication.onCreate() (BaseApplication.java:201)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1025)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5618)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread.-wrap2(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1708)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.os.Looper.loop() (Looper.java:159)
11-21 10:37:27.253 25535-25535/? I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6345)
11-21 10:37:27.253 25535-25535/? I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-21 10:37:27.253 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1096)
11-21 10:37:27.253 25535-25535/? I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:883)
11-21 10:37:27.256 25535-25535/? W/Hawk: key is generating without password
11-21 10:37:27.256 25535-25535/? W/Hawk: key is generated without password
11-21 10:37:27.260 25535-25535/? D/JPush: [JPushInterface] action:init - sdkVersion:2.1.5, buildId:298
11-21 10:37:27.272 25535-25535/? D/JPush: [JPushGlobal] metadata: appKey - 239b3fbf21575861caecae55
11-21 10:37:27.273 25535-25535/? D/JPush: [JPushGlobal] metadata: channel - jpush_release
11-21 10:37:27.309 25535-25535/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.waimai.waimai, PID: 25535
                                                   java.lang.RuntimeException: Unable to create application com.waimai.waimai.widget.BaseApplication: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.waimai.waimai.model.RongyunInfo.appkey' on a null object reference
                                                       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5621)
                                                       at android.app.ActivityThread.-wrap2(ActivityThread.java)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1708)
                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                       at android.os.Looper.loop(Looper.java:159)
                                                       at android.app.ActivityThread.main(ActivityThread.java:6345)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1096)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:883)
                                                    Caused by: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.waimai.waimai.model.RongyunInfo.appkey' on a null object reference
                                                       at com.waimai.waimai.widget.BaseApplication.onCreate(BaseApplication.java:238)
                                                       at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
                                                       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5618)
                                                       at android.app.ActivityThread.-wrap2(ActivityThread.java)?
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1708)?
                                                       at android.os.Handler.dispatchMessage(Handler.java:102)?
                                                       at android.os.Looper.loop(Looper.java:159)?
                                                       at android.app.ActivityThread.main(ActivityThread.java:6345)?
                                                       at java.lang.reflect.Method.invoke(Native Method)?
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1096)?
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:883)?
11-21 10:37:27.315 1325-2343/? W/ActivityManager:   Force finishing activity com.waimai.waimai/.activity.SplashActivity, mTaskHistory size = 20
                                                  
                                                  [ 11-21 10:37:27.334  1325: 2343 D/         ]
                                                  SurfaceMonitor closed!
11-21 10:37:27.347 1325-1378/? W/ActivityManager: Skipping crash dialog of ProcessRecord{c30508d 25535:com.waimai.waimai/u0a37}: background
11-21 10:37:27.348 25535-25535/? I/Process: killProcess pid=25535
                                            java.lang.RuntimeException
                                                at android.os.Process.killProcess(Process.java:1252)
                                                at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:111)
                                                at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
                                                at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)
11-21 10:37:27.348 25535-25535/? I/Process: Sending signal. PID: 25535 SIG: 9
11-21 10:37:27.361 1325-18879/? I/ActivityManager: Process com.waimai.waimai (pid 25535) has died
11-21 10:37:27.361 1325-18879/? D/ActivityManager: cleanUpApplicationRecord -- 25535
11-21 10:37:27.361 1325-18879/? W/ActivityManager: Service crashed 2 times, stopping: ServiceRecord{c0e3f0f u0 com.waimai.waimai/cn.jpush.android.service.PushService}
11-21 10:37:27.362 1325-1424/? I/IgnoreTouchEvent: ignoreTouchEvent onWindowDetached
11-21 10:37:27.366 1325-1812/? D/WindowManager: relayoutVisibleWindow: Window{c7be61b u0 SurfaceView - com.smartisanos.launcher/com.smartisanos.launcher.Launcher EXITING} mAnimatingExit=true, mRemoveOnExit=false, mDestroying=false
11-21 10:37:27.373 1325-18887/? D/WindowManager: relayoutVisibleWindow: Window{32fad18 u0 com.smartisanos.launcher/com.smartisanos.launcher.Launcher EXITING} mAnimatingExit=true, mRemoveOnExit=false, mDestroying=false
11-21 10:37:27.385 3022-3022/? D/PILLS: GlobalBubbleManager : hideAllMailBubbles
11-21 10:37:27.385 3022-3022/? I/PILLS: BubbleController : bubble delay to gone already
11-21 10:37:27.413 1325-23682/? W/InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@382708e attribute=null, token = android.os.BinderProxy@883f8fb
11-21 10:37:27.941 1761-1761/? D/HeadsetPhoneState: Enter onSignalStrengthsChanged
11-21 10:37:27.941 1761-1761/? D/HeadsetPhoneState: Exit onSignalStrengthsChanged

以下是我Application代碼

public class BaseApplication extends Application {

    public static Context context;
    public static String cookieStore;
    public static QiniuFileUploader qiniuUp=new QiniuFileUploader();

    public interface ShopHixEvent {
        void handle(int mode, int code, String info, int handlePatchVersion);
    }
    public static ShopHixEvent sophixEvent=null;

    private static BaseApplication mInstance;

    public static BaseApplication getInstance()
    {
        return mInstance;
    }

    private void initOkGo(){

        HttpHeaders headers = new HttpHeaders();
        headers.put("User-Agent", Global.usergent);    //header不支持中文,不允許有特殊字符
        headers.put("CLIENT_VAR", TextUtils.isEmpty(Api.VERSION_NAME)?"1.0.0":Api.VERSION_NAME);
        headers.put("HCM-API-TYPE", "WRITE");
        headers.put("HCM-API-AK", Api.ATOKEN);
        headers.put("HCM-API-SK", Api.STOKEN);
        headers.put("CLIENT_TYPE", Utils.getClientStr());
        headers.put("AUTHORIZATION", Api.getJwt());
        //headers.put("cookie", cookieStore);

        HttpParams params = new HttpParams();
        params.put("User-Agent", Global.usergent);     //param支持中文,直接傳,不要自己編碼
        params.put("CLIENT_VAR", TextUtils.isEmpty(Api.VERSION_NAME)?"1.0.0":Api.VERSION_NAME);
        params.put("CLIENT_TYPE", Utils.getClientStr());

        OkGo.getInstance().init(this)

                //.setOkHttpClient(builder.build())               //建議設(shè)置OkHttpClient,不設(shè)置將使用默認(rèn)的
                //.setCacheMode(CacheMode.NO_CACHE)               //全局統(tǒng)一緩存模式,默認(rèn)不使用緩存,可以不傳
                //.setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE)   //全局統(tǒng)一緩存時(shí)間,默認(rèn)永不過(guò)期,可以不傳
                //.setRetryCount(3)                               //全局統(tǒng)一超時(shí)重連次數(shù),默認(rèn)為三次,那么最差的情況會(huì)請(qǐng)求4次(一次原始請(qǐng)求,三次重連請(qǐng)求),不需要可以設(shè)置為0
                .addCommonHeaders(headers)                      //全局公共頭
                .addCommonParams(params);                       //全局公共參數(shù);


        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("API4HCM_USER");
        //log打印級(jí)別,決定了log顯示的詳細(xì)程度
        loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.HEADERS);
        //log顏色級(jí)別,決定了log在控制臺(tái)顯示的顏色
        loggingInterceptor.setColorLevel(Level.INFO);
        builder.addInterceptor(loggingInterceptor);

        //全局的讀取超時(shí)時(shí)間
        builder.readTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
        //全局的寫(xiě)入超時(shí)時(shí)間
        builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
        //全局的連接超時(shí)時(shí)間
        builder.connectTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);

        //使用sp保持cookie,如果cookie不過(guò)期,則一直有效
        //cookiejar=new CookieJarImpl(new SPCookieStore(this));
        builder.cookieJar(new CookieJarImpl(new SPCookieStore(this)));


        //方法一:信任所有證書(shū),不安全有風(fēng)險(xiǎn)
        //HttpsUtils.SSLParams sslParams1 = HttpsUtils.getSslSocketFactory();
        //方法二:自定義信任規(guī)則,校驗(yàn)服務(wù)端證書(shū)
        //HttpsUtils.SSLParams sslParams2 = HttpsUtils.getSslSocketFactory(new SafeTrustManager());
        //方法三:使用預(yù)埋證書(shū),校驗(yàn)服務(wù)端證書(shū)(自簽名證書(shū))
        //HttpsUtils.SSLParams sslParams3 = HttpsUtils.getSslSocketFactory(getAssets().open("srca.cer"));
        //方法四:使用bks證書(shū)和密碼管理客戶端證書(shū)(雙向認(rèn)證),使用預(yù)埋證書(shū),校驗(yàn)服務(wù)端證書(shū)(自簽名證書(shū))
        //HttpsUtils.SSLParams sslParams4 = HttpsUtils.getSslSocketFactory(getAssets().open("xxx.bks"), "123456", getAssets().open("yyy.cer"));
        //builder.sslSocketFactory(sslParams1.sSLSocketFactory, sslParams1.trustManager);
        //配置https的域名匹配規(guī)則,詳細(xì)看demo的初始化介紹,不需要就不要加入,使用不當(dāng)會(huì)導(dǎo)致https握手失敗
        //builder.hostnameVerifier(new SafeHostnameVerifier());



      /*  //必須調(diào)用初始化
        OkGo.init(this);

        //以下設(shè)置的所有參數(shù)是全局參數(shù),同樣的參數(shù)可以在請(qǐng)求的時(shí)候再設(shè)置一遍,那么對(duì)于該請(qǐng)求來(lái)講,請(qǐng)求中的參數(shù)會(huì)覆蓋全局參數(shù)
        //好處是全局參數(shù)統(tǒng)一,特定請(qǐng)求可以特別定制參數(shù)
        try {
            //以下都不是必須的,根據(jù)需要自行選擇,一般來(lái)說(shuō)只需要 debug,緩存相關(guān),cookie相關(guān)的 就可以了
            OkGo.getInstance()

                    //打開(kāi)該調(diào)試開(kāi)關(guān),控制臺(tái)會(huì)使用 紅色error 級(jí)別打印log,并不是錯(cuò)誤,是為了顯眼,不需要就不要加入該行
                    .debug("OkGo")

                    //如果使用默認(rèn)的 60秒,以下三行也不需要傳
                    .setConnectTimeout(OkGo.DEFAULT_MILLISECONDS)  //全局的連接超時(shí)時(shí)間
                    .setReadTimeOut(OkGo.DEFAULT_MILLISECONDS)     //全局的讀取超時(shí)時(shí)間
                    .setWriteTimeOut(OkGo.DEFAULT_MILLISECONDS)    //全局的寫(xiě)入超時(shí)時(shí)間

                    //可以全局統(tǒng)一設(shè)置緩存模式,默認(rèn)是不使用緩存,可以不傳,具體其他模式看 github 介紹 https://github.com/jeasonlzy/
                    .setCacheMode(CacheMode.NO_CACHE)

                    //可以全局統(tǒng)一設(shè)置緩存時(shí)間,默認(rèn)永不過(guò)期,具體使用方法看 github 介紹
                    .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE)

                    //如果不想讓框架管理cookie,以下不需要
//                .setCookieStore(new MemoryCookieStore())                //cookie使用內(nèi)存緩存(app退出后,cookie消失)
                    .setCookieStore(new PersistentCookieStore());          //cookie持久化存儲(chǔ),如果cookie不過(guò)期,則一直有效

                    //可以設(shè)置https的證書(shū),以下幾種方案根據(jù)需要自己設(shè)置,不需要不用設(shè)置
//                    .setCertificates()                                  //方法一:信任所有證書(shū)
//                    .setCertificates(getAssets().open("srca.cer"))      //方法二:也可以自己設(shè)置https證書(shū)
//                    .setCertificates(getAssets().open("aaaa.bks"), "123456", getAssets().open("srca.cer"))//方法三:傳入bks證書(shū),密碼,和cer證書(shū),支持雙向加密

                    //可以添加全局?jǐn)r截器,不會(huì)用的千萬(wàn)不要傳,錯(cuò)誤寫(xiě)法直接導(dǎo)致任何回調(diào)不執(zhí)行
//                .addInterceptor(new Interceptor() {
//                    @Override
//                    public Response intercept(Chain chain) throws IOException {
//                        return chain.proceed(chain.request());
//                    }
//                })

                    //這兩行同上,不需要就不要傳
                    //.addCommonHeaders(headers)                                         //設(shè)置全局公共頭
                    //.addCommonParams(params);                                          //設(shè)置全局公共參數(shù)
        } catch (Exception e) {
            e.printStackTrace();
        }
*/

    }
    //CookieJarImpl cookiejar;

    @Override
    public void onCreate() {

        SophixManager.getInstance().queryAndLoadNewPatch();
        super.onCreate();
        /*
        默認(rèn)使用的高度是設(shè)備的可用高度,也就是不包括狀態(tài)欄和底部的操作欄的,如果你希望拿設(shè)備的物理高度進(jìn)行百分比化:
         */
        AutoLayoutConifg.getInstance().useDeviceSize();


        Api.VERSION_NAME=Utils.getVersionName(getApplicationContext());
        // 這里實(shí)現(xiàn)SDK初始化,appId替換成你的在Bugly平臺(tái)申請(qǐng)的appId
        // 調(diào)試時(shí),將第三個(gè)參數(shù)改為true

        /*app過(guò)場(chǎng)*/
        Once.initialise(this);

        context = this;
        Hawk.init(this)
                .setEncryptionMethod(HawkBuilder.EncryptionMethod.MEDIUM)
                .setStorage(HawkBuilder.newSharedPrefStorage(this))
                .setLogLevel(LogLevel.FULL)
                .build();
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);





        //OkHttpFinal
        OkHttpFinalConfiguration.Builder builder = new OkHttpFinalConfiguration.Builder();
        ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(this));
        builder.setCookieJar(cookieJar);

        OkHttpFinal.getInstance().init(builder.build());


        //okGo

        initOkGo();


        //Logger.init(Api.packagename);
        Logger.init(Utils.TAG+"-Hawk-");
        //OkLogger

        PlatformConfig.setWeixin("", "");
        //微信 appid appsecret
        PlatformConfig.setSinaWeibo(" ", " ");
        //新浪微博 appkey appsecret
        PlatformConfig.setQQZone("", "");

        if(AccountInfo.getInstance().isExist()){
            if(!Utils.isEmpty(AccountInfo.getInstance().loadAccount().token)){
                RongIM.init(this, AccountInfo.getInstance().loadAccount().rongcloud.appkey);//初始化聊天模塊
            }
        }
        //當(dāng)程序發(fā)生Uncaught異常時(shí)捕獲
        Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler(){
            @Override
            public void uncaughtException (Thread thread, Throwable e)   {
                //做你要做的處理,比如把e.getMessage()保存到文件,發(fā)送一個(gè)email等等,不是本篇重點(diǎn),不再贅述
                int crash_count=Hawk.get("crash_count",0);
                Utils.syso("===="+crash_count);
                if(crash_count>=1){
                    Hawk.put("crash_count",0);
                    clearAppUserData(Api.packagename);
                }else {
                    Hawk.put("crash_count",++crash_count);
                    Utils.saveCrashInfo2File(new Exception("thread:"+thread,e));
                    MobclickAgent.onKillProcess(getApplicationContext());
                    System.exit(1);
                }

                //無(wú)效 發(fā)現(xiàn)sophix內(nèi)部監(jiān)聽(tīng)crash異常的優(yōu)先級(jí)比這個(gè)高 它發(fā)現(xiàn)就清除補(bǔ)丁,之后看有沒(méi)更好的辦法,異常也去加載補(bǔ)丁
                //SophixManager.getInstance().killProcessSafely();
            }});




        //bugly init
        String channel = WalleChannelReader.getChannel(this.getApplicationContext());
        if(Api.isLog) System.out.println("oreo this app channel : "+channel);

        //在代碼中配置友盟Channel
        MobclickAgent. startWithConfigure(new MobclickAgent.UMAnalyticsConfig(this.getApplicationContext(),"",channel));
        //測(cè)試環(huán)境輸出友盟日志
        MobclickAgent.setDebugMode(Api.isLog);
        //測(cè)試環(huán)境不統(tǒng)計(jì)錯(cuò)誤(false 為不統(tǒng)計(jì))
        MobclickAgent.setCatchUncaughtExceptions(!Api.isLog);

        initBugly(channel);

    }
    public Process clearAppUserData(String packageName) {
        Process p = execRuntimeProcess("pm clear " + packageName);

        return p;
    }
    public Process execRuntimeProcess(String commond) {
        Process p = null;
        try {
            p = Runtime.getRuntime().exec(commond);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return p;
    }

    private void initBugly(String channel){
        Beta.autoCheckUpgrade = true;//true為自動(dòng)檢查更新
        Bugly.init(this.getApplicationContext(), Api.BUGLYKEY, Api.isLog);
        //設(shè)置當(dāng)前為開(kāi)發(fā)設(shè)備
        //Bugly.setIsDevelopmentDevice(this, true);
        Bugly.setAppChannel(this, channel);
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        // you must install multiDex whatever tinker is installed!
        if(mInstance==null)mInstance=this;
        if(!Api.isDebug)initSopHix();
        MultiDex.install(base);
        // 安裝tinker
        //Beta.installTinker();
    }


    /**
    阿里sophix熱修復(fù)
     */
    private void initSopHix(){

        String appVersion="1.0.0";
        try {
            appVersion=this.getPackageManager().getPackageInfo(this.getPackageName(),0).versionName;
        }catch (Exception e){
            e.printStackTrace();
        }
        SophixManager.getInstance().setContext(this)
                .setSecretMetaData(Api.SOPHIX_ID,Api.SOPHIX_KEY,Api.SOPHIX_RSA) //代碼設(shè)置id,key,rsa
                .setAppVersion(appVersion)
                .setAesKey(null)
                .setEnableDebug(Api.isLog)
                .setPatchLoadStatusStub(new PatchLoadStatusListener() {
                    @Override
                    public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
                        if (sophixEvent != null) {
                            sophixEvent.handle(mode,code,info,handlePatchVersion);
                        }

                        System.out.println("oreo sophix"+"mode = "+mode+"info = "+ info);
                        // 補(bǔ)丁加載回調(diào)通知
                        if (code == PatchStatus.CODE_LOAD_SUCCESS) {
                            // 表明補(bǔ)丁加載成功
                            System.out.println("oreo sophix"+"表明補(bǔ)丁加載成功");
                        } else i
回答
編輯回答
有點(diǎn)壞

空指針了,檢查下下面這段代碼

RongIM.init(this, AccountInfo.getInstance().loadAccount().rongcloud.appkey);//初始化聊天模塊

還有 Thread.setDefaultUncaughtExceptionHandler 這個(gè)放在 onCreate 方法的第一行,不然前面的異常捕獲不到。

2017年11月10日 16:51
編輯回答
悶油瓶

首先閃退日志里面已經(jīng)有代碼指向了,你自己查就能知道原因,之所以沒(méi)有捕獲是在你設(shè)置全局捕獲之前就報(bào)錯(cuò)了,所以沒(méi)法捕獲到。另外你的application寫(xiě)的好亂,有些東西可以脫離application進(jìn)行,或者你將需要的設(shè)置的項(xiàng)目設(shè)置外部的方法進(jìn)行調(diào)用,看的頭皮發(fā)麻。。

2018年5月9日 18:50