改造本机崩溃致命信号11(SIGSEGV)

时间:2015-01-23 13:25:50

标签: android json serialization gson retrofit

我正在使用Retrofit库与服务器端进行通信。从服务器我得到对象列表

List<BaseAction>

我将子操作存储为:ActionUrl, ActionBell, etc. 我在回调成功方法中崩溃了

 Fatal signal 11 (SIGSEGV), code 1, fault addr 0x610091 in tid 21471

而我的问题是 :出了什么问题以及为什么改装本机崩溃?

4 个答案:

答案 0 :(得分:8)

我花了几个小时进行调试,并在List中找到该问题。 Retrofit无法正确反序列化我的JSON并将其转换为java对象。

在Volley中我使用了自己的类ActionDeserialize<T> implements JsonDeserializer<T>,我根据类实现了类解析:

private Type getTypeForType(BTypes bType) {
    return bType.getResponseClass();
}

有关此here

的更多详细信息

所以,我通过设置新的GsonConverter解决了我的问题(在blog读取之后):

    Gson gson = new GsonBuilder()
            .registerTypeAdapter(BaseActionPOJO.class, new ActionDeserialize<BaseActionPOJO>())
            .create();

    RestAdapter restAdapter = new RestAdapter.Builder()
            .setLogLevel(loglevel)
            .setConverter(new GsonConverter(gson))
            .setRequestInterceptor(requestInterceptor)
            .setEndpoint(Urls.BASE_URL)
            .setClient(new OkClient())
            .build();

它解决了原生部分的本机崩溃问题。 我希望它能节省您的时间。

答案 1 :(得分:4)

将这两行添加到android部分的build.gradle中:

android{
    compileOptions {
            sourceCompatibility 1.8
            targetCompatibility 1.8
        }
}

答案 2 :(得分:0)

我仔细检查了一下,发现序列化的名称与库的输出不匹配。问题解决了!

答案 3 :(得分:0)

对我来说,原来我没有互联网许可,当我切换到旧版本的改造时,该错误在logcat中出现在我身上,当我添加许可并切换回最新版本。 将此权限添加到清单中

    <uses-permission android:name="android.permission.INTERNET"/>