应用程序级构建文件中的以下关闭显示与customTypeMapping对象有关的警告“无法为最终字段分配值”:
apollo {
customTypeMapping = [
"DateTime" : "java.lang.String",
"UUID" : "java.lang.String",
"JSONString" : "java.lang.String"
]
}
这似乎是依赖项或工具中的最新更改。我尝试了其他语句格式,例如:
customTypeMapping["DateTime"]="java.lang.String"
但没有成功(显示构建错误:无此类属性:类org.gradle.api.internal.provider.DefaultPropertyState的DateTime)
此问题开头的代码按预期运行,但是如何清除警告?
阿波罗依赖项:
classpath "com.apollographql.apollo:apollo-gradle-plugin:1.0.0-alpha2"
答案 0 :(得分:0)
一切都正确,但是您还需要通过注册自定义适配器来完成它。
一些额外的细节可能是您的引用(apollo)必须位于gradle文件的末尾(在声明了所有其他依赖项之后)
在我的情况下,我有一个UUID类型的特殊情况,我所做的是:
在我的应用程序build.gradle结束
apollo {
customTypeMapping = [
"UUID" : "java.lang.String"
]
}
在课堂上,我正在使用Apollo:
创建了我的自定义适配器
CustomTypeAdapter<String> customTypeAdapter = new CustomTypeAdapter<String>() {
@Override
public String decode(@NotNull CustomTypeValue value) {
return value.toString();
}
@NotNull
@Override
public CustomTypeValue encode(@NotNull String value) {
return new CustomTypeValue.GraphQLString(value);
}
};
然后在初始化阿波罗时
apolloClient = ApolloClient.builder().addCustomTypeAdapter(CustomType.UUID, customTypeAdapter)
.serverUrl(BASE_URL)
.okHttpClient(okHttpClient)
.build();
如果您有更多问题,请参考该框架,它可能有点复杂,但是我认为通过此示例,您可以了解它。
https://github.com/apollographql/apollo-android#custom-scalar-types