这是崩溃日志
Fatal Exception: java.lang.ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject
at com.alibaba.fastjson.JSON.parseObject(JSON.java:169)
at com.avos.avoscloud.AppRouterManager$1.onSuccess(AppRouterManager.java:141)
at com.avos.avoscloud.GetHttpResponseHandler.onSuccess(GetHttpResponseHandler.java:99)
at com.avos.avoscloud.AsyncHttpResponseHandler.onResponse(AsyncHttpResponseHandler.java:42)
at com.avos.avoscloud.okhttp.Call$AsyncCall.execute(Call.java:166)
at com.avos.avoscloud.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

研究过程:
1.看Crash Log发现是LeanCloud内部产生的崩溃,于是便开始研究LeanCloud的代码
2. LeanCloud启动时可能会通过这个网址https://app-router.leancloud.cn/1/route?appId=,获取
{ ttl: 600,
push_router_server: "router-g0-push.leancloud.cn",
api_server: “api.leancloud.cn” }
配置文件上的服务器信息。
3.关键是获取此配置表的方法AppRouterManager.fetchRouter(),在解析返回信息时没有判断相应Http状态码,而只判断了Http ContentType,
这就可能导致如果服务器出错了情况下,客户端依然会按正常流程解析返回的数据,就可能会导致解析数据出错最终致使应用崩溃。

所以推测是由于LeanCloud服务器出错导致App崩溃,后来又仔细查看App崩溃的时间得知,
崩溃时间全部集中在上午9点左右的时候,之后便没发生过崩溃,这更验证了我们的推测。

所以我想问的是,到底是什么原因导致的这次崩溃?还会不会再发生呢?

你好,抱歉。早上的时候,确实是因为服务端返回的数据格式不合法,导致了 Android SDK 内部未 try 异常而崩溃。

我们已经做了修复的 pr,正在 review。之后不会再出现这个问题。