Retrofit 2.0.0-beta4:无法为类创建转换器

时间:2016-03-16 08:20:04

标签: android retrofit android-6.0-marshmallow retrofit2 activeandroid

以下是我的文件:

的build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.google.code.gson:gson:2.6.1'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
    compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
    compile 'com.android.databinding:baseLibrary:2.0.0-beta2'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
}

Pojo模型类:

@Table(name = "ModelTableName")
public class DataEntity extends Model {

    @Column(name = "_id")
    private String _id;

    @Expose
    @Column(name = "imageUri")
    private String uri;

    @Expose
    @Column(name = "title")
    private String title;

    public DataEntity() {
        super();
    }

    public void set_id(String _id) {
        this._id = _id;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String get_id() {
        return _id;
    }

    public String getUri() {
        return uri;
    }

    public String getTitle() {
        return title;
    }
}

改造服务:

protected Retrofit build() {
        if (null == retrofit) {
            HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(client)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }

我正在使用ActiveAndroid对API调用和数据库进行改造。 在Pre 6.0 Android设备上,应用程序运行正常。 无法确定根本原因。

通过以下帖子:

Retrofit 2 beta-4. Android 6. Unable to create convertor

我无法理解使用gson或gsonbuilder需要什么?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:3)

他们现在已经发布了稳定版的Retrofit。 尝试使用此

compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'

此外,如果您使用的是ActiveAndroid,那么您应该像这样创建改装对象

Retrofit retrofit = new new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .client(client)
            .addConverterFactory(
                    GsonConverterFactory.create(new GsonBuilder()
                            .serializeNulls()
                            .excludeFieldsWithModifiers(Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC)
                            .create()))
            .build();

因为Model类包含一些静态和瞬态字段。 希望这会有所帮助。