java - 如何将 Apollo-android 合并到具有多个模块的项目中?
问题描述
我有一个使用 graphql 与服务器通信的 Android 项目。
它有很多模块。每个都有自己的 graphql 查询/突变,但它们共享相同的模式。
目前,我遇到了 Apollo 自动生成多个type.CustomType
类的问题,并且似乎顶级“app”模块将type.CustomType
使用任意模块的实现进行编译。
根据模块的查询,内容会type.CustomType
有所不同,因此FieldNotFoundException
即使我没有使用反射并且项目编译良好,也会出现崩溃。
例如
java.lang.NoSuchFieldError: No static field LONG of type Lapi/type/CustomType; in class Lapi/type/CustomType; or its superclasses (declaration of 'api.type.CustomType' appears in /data/app/com.functorz.app-oV7ixVEf0e0CIt1sWzT4uA==/base.apk!classes6.dex)
at com.functorz.network.GraphQLRequestUtil.initialSubscriptionClient(GraphQLRequestUtil.java:151)
at com.functorz.network.GraphQLRequestUtil.<init>(GraphQLRequestUtil.java:111)
at com.functorz.network.GraphQLRequestUtil.<clinit>(GraphQLRequestUtil.java:48)
at com.functorz.network.GraphQLRequestUtil.getInstance(GraphQLRequestUtil.java:162)
GraphQLRequestUtil 第 151 行的代码非常简单,它是引用 CustomType 的第一行,即
.addCustomTypeAdapter(CustomType.LONG, TypeUtil.LONG_TYPE_ADAPTER)
在
apolloSubscriptionClient = ApolloClient.builder()
.serverUrl(subscriptionUrl)
.okHttpClient(subscriptionOkHttpClient)
.subscriptionTransportFactory(new WebSocketSubscriptionTransport.Factory(socketUrl, subscriptionOkHttpClient))
.addCustomTypeAdapter(CustomType.LONG, TypeUtil.LONG_TYPE_ADAPTER)
.addCustomTypeAdapter(CustomType.OFFSETDATETIME, TypeUtil.DATE_TIME_TYPE_ADAPTER)
.addCustomTypeAdapter(CustomType.LOCALDATE, TypeUtil.LOCAL_DATE_TYPE_ADAPTER)
.addCustomTypeAdapter(CustomType.SQLDATE, TypeUtil.SQL_DATE_TYPE_ADAPTER)
.addCustomTypeAdapter(CustomType.URL, TypeUtil.URL_TYPE_ADAPTER)
.addCustomTypeAdapter(CustomType.BIGDECIMAL, TypeUtil.DECIMAL_TYPE_ADAPTER)
.build();
我认为我错误地模块化了我的项目。当所有模块都依赖于 Apollo 时,是否有人对如何将项目拆分为多个模块有建议?
解决方案
推荐阅读
- c# - 没有为此对象定义无参数构造函数,automapper 8 和 IValueResolver
- angularjs - Angular.js 控制器命名方法
- html - 使用 bootstrap 和 codeigniter 自定义 pdf 预览
- java - 如何将跑步者中的这个数字列表设置为构造函数中的 ArrayList?
- html - 为什么我的两个模态中只有一个显示?
- azure-logic-apps - 如何使用 Azure Logic App Skype 连接器向 Skype 组发送消息?
- sql - 用于连接两个表并拉取重复条目的 SQL 查询
- windows - OpenCOBOL 静态链接多个 .cob 文件
- python - 使用while循环计算单词的平均长度
- angular - 如何使用扫描运算符来计算 void observable 的发射值?