问题标签 [apollo-android]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
325 浏览

java - 如何将 Apollo-android 合并到具有多个模块的项目中?

我有一个使用 graphql 与服务器通信的 Android 项目。

它有很多模块。每个都有自己的 graphql 查询/突变,但它们共享相同的模式。

目前,我遇到了 Apollo 自动生成多个type.CustomType类的问题,并且似乎顶级“app”模块将type.CustomType使用任意模块的实现进行编译。

根据模块的查询,内容会type.CustomType有所不同,因此FieldNotFoundException即使我没有使用反射并且项目编译良好,也会出现崩溃。

例如

GraphQLRequestUtil 第 151 行的代码非常简单,它是引用 CustomType 的第一行,即

我认为我错误地模块化了我的项目。当所有模块都依赖于 Apollo 时,是否有人对如何将项目拆分为多个模块有建议?

0 投票
1 回答
3747 浏览

kotlin - 如何使用 Kotlin 的 Apollo Android,但没有 Android?

我想使用 Apollo Android 查询 GitHub GraphQL api,将 Kotlin 与 Gradle Kotlin DSL 结合使用,但不在Android 上。

错误信息

我确实遇到了一个特定的问题,但这可能是因为我在其他地方的设置有问题。

总而言之,我有一个ViewLogin.graphql文件,从中ViewLoginQuery生成 a ,但是当我尝试使用时,ViewLoginQuery.builder()就是unresolved reference: builder问题所在。

设置

https://github.com/apollographql/apollo-android/issues/1573中所述,应该可以在没有 Android 的情况下使用 Apollo Android。

环境

我正在使用 Arch Linux 和 IntelliJ,并安装了 JS GraphQL IntelliJ 插件。

Gradle Kotlin DSL 构建文件

在编写构建文件时,我已经遇到了一个问题:我没有设法避免使用已弃用 buildscript的块。

https://plugins.gradle.org/plugin/com.apollographql.apollo中显示的插件显然是https://github.com/apollographql/apollo-android/issues/1573#issuecomment-575613238中提到的孵化插件这还没有准备好。

以下构建文件似乎正确应用了插件:

所以在同步之后,我就有了可用的 apollo Gradle 任务。

下载架构

我安装了Apollo cli 界面,然后按照Apollo docs运行

这给了我一个schema.json我放进去的东西src/main/graphql/nl/mypackage/myapplication/schema.json

示例查询

我有一个文件src/main/graphql/nl/mypackage/myapplication/ViewLogin.graphql,其中包含query ViewLogin { viewer { login }}. viewerIntelliJ 在和上都显示错误login,说Unknown field "viewer" on object type "Query". Did you mean "viewer"?. 但这可能是 JS GraphQL 插件的错误配置。我尝试通过添加一个文件来配置 JS src/main/graphql/nl/mypackage/myapplication/.graphqlconfigGraphQL

但错误仍然存​​在。

然后我执行了generateApolloClasses生成build/generated/source/apollo/classes/main/nl/mypackage/myapplication/ViewLoginQuery.kt文件的 Gradle 任务。当我打开该文件时,没有显示任何错误,并且一切正常。

执行查询

在一个文件src/main/kotlin/nl/mypackage/myapplication/GraphqlExample.kt中,我尝试使用该查询,遵循https://www.apollographql.com/docs/android/essentials/get-started/#sumption-code上的文档, 但是当我尝试使用时,ViewLoginQuery.builder()builder无法识别(通过IntelliJ,以及当我尝试运行它时)。

我尝试在 ViewLoginQuery 的超类中进行搜索,但找不到任何关于构建器的信息。

0 投票
0 回答
158 浏览

android - 单次 Apollo Rx 查询

Apollo Android 客户端支持 RxJava2。他们支持

  1. 可观察的<响应<T>
  2. 单身的
  3. 可完成

来自官方文档

apolloClient.rxQuery返回 a Observable,但我想在Single这里使用。我如何Single在这里使用

0 投票
0 回答
206 浏览

android - 我可以在 Apollo Android 中使用 .gql 架构吗?(不生成类)

我在尝试使用 Apollo Android 设置我的 GraphQL 查询时遇到问题。我有一个 .gql 架构而不是 json 架构。我设法用 Apollo iOS 客户端设置它,所以我只能假设架构很好,并且 Apollo Android 支持这个。(不过,我在他们的文档中找不到任何相关内容。)

目前项目构建没有错误,但我找不到任何生成的类。

除了下面的设置之外,我还尝试生成 Kotlin 类,将 useSemanticNaming 设置为 false 并且通常只是往墙上扔泥看看会粘住什么。

我目前的设置:

build.gradle(根)

build.gradle(应用程序):

我的架构:

GraphQL 文件:

0 投票
1 回答
1574 浏览

android - 无法从 Kotlin 中生成的 Apollo 类构建查询(.builder() 不存在)

我无法构建由 Android Apollo 库生成的查询。

我有以下 .gpaphql 文件:

它为此生成了一个 Kotlin 请求文件:

生成的 LogInMutation 类没有 .builder() 方法,它是一个数据类。如何从此请求创建 Query 类的实例,以便能够将其用作 ApolloClient.query() 方法中的参数?

0 投票
1 回答
371 浏览

java - 在根项目中找不到任务“generateApolloSources”

我在 java 代码中使用 apollo graphql 客户端。我的毕业文件是

我遵循了https://github.com/apollographql/apollo-android中提到的文档 我在第 4 步和第 5 步卡住了。无法添加

在 gradle 文件中并在执行命令 gradlew generateApollo 时出现错误,因为在根项目“testProject”中找不到任务“generateApolloSources”

谁能帮忙

0 投票
2 回答
1510 浏览

apollo - 无法使用 gradlew 命令下载 json 架构

我不知道如何使用该gradlew命令将我的GraphQL架构转换为文档JSON指定的文件

CMD在我的项目文件夹中打开,运行了gradlew一次命令,它给了我这个错误:

Project 'module' not found in root project gradlew

我在我的项目中创建了一个名为“module”的模块,现在它抛出以下错误:

Task 'downloadApolloSchema' not found in project ':module'.

我已经将所有依赖项添加到最新版本(发布时为 2.0.0),所以我不知道为什么会这样。我已经在网上搜索过,没有发现任何关于这个的...

这是我试图发出的命令CMD

我必须上一个目录 ( ..\),因为该gradlew命令位于我的 app 文件夹上方。

我在 Windows 上,我的 Gradle 版本是 6.4。

0 投票
1 回答
888 浏览

android - 使用架构组件等待未决实时数据的最佳方法

我正在开发一个通过 apollo-android 从 graphql 服务器获取数据的应用程序。

我对我的 aws rds 数据库进行了一次提取。我在onCreate()我的 CalendarFragment 中进行此获取。

问题是,在onViewCreated(),我想将我的 textview 设置为获取的字段之一,名字和姓氏。因此,我运行getBarberFullName返回String值的方法mBarberFullName。我试图在视图模型处理所有逻辑方法时跟随 UI 控制器显示。getBarberFullName驻留在我的 ViewModel 中。

哪里mMasterAppointmentsMutableLiveData<List<AppointmentModel>>。在我的onViewCreated()回调中,我运行

但是,mMasterAppointments始终为 null,因此它只返回 mBarberFullName 的默认值,即String.

但是,如果我要运行以下代码,同样onViewCreated(),我会得到所需的结果,其中 textview 使用所需的理发师的全名进行更新。

getAllAppointments返回mMasterAppointments位于我的 ViewModel 中的观察者。

虽然getAllAppointmentsgetBarberFullName在 内被调用onViewCreated(),但一个能够访问 的挂起值,mMasterAppointments而另一个则不能。为什么?

我不想在 FragmentsonViewCreated回调中执行逻辑,那么如何等待mMasterApointmentDataViewModel 中的挂起getBarberFullName()?在这种情况下是否有工具可以帮助LiveData我?ViewModel

0 投票
1 回答
707 浏览

java - Apollo Java GraphQL 客户端:generateApolloSources 失败

我正在探索 graphql,我按照本教程https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/让服务器运行。我现在正在尝试使用这个库为这个服务器编写一个 Java 客户端:https ://github.com/apollographql/apollo-android 。到目前为止,我的代码是:https ://github.com/alampada/graphql-java-client-tutorial ,自述文件包括重现步骤。

我无法让阿波罗客户端库为我的查询生成模型:https ://github.com/alampada/graphql-java-client-tutorial/blob/master/src/main/graphql/com/example/book .graphql./gradlew generateApolloSources失败:

有人可以解释我做错了什么吗?

0 投票
1 回答
275 浏览

android - 如何使 apollo android 缓存失效?

这是我用于缓存的 apollo 客户端代码

我正在做一个查询,之后阿波罗缓存了我的结果,但是当更多数据添加到查询中时,我不明白如何根据结果是否更改来使缓存无效。如果没有结果更改从缓存中获取数据或获取新数据并更新缓存