如何在 Android Studio 中从 Apollo Client (GraphQL) 导入生成的类

Posted

技术标签:

【中文标题】如何在 Android Studio 中从 Apollo Client (GraphQL) 导入生成的类【英文标题】:How to import generated class from Apollo Client (GraphQL) in Android Studio 【发布时间】:2018-04-06 13:32:40 【问题描述】:

我是 android Studio 的新手,想用 GraphQL 和 Apollo Client 编写一个小示例应用程序。

我已成功设置构建环境和自动代码生成。这是文件结构的截图,build/generated/apollo/AllPostsQuery是基于src/main/graphql/AllPosts.graphql自动生成的类:

我现在唯一的问题是我不知道如何将AllPostsQuery 类导入我的MainActivy

我只是尝试过:

import AllPostsQuery; 

但这不起作用:

无法解析符号AllPostsQuery

我需要在导入路径中添加任何前缀吗?

【问题讨论】:

看这里如何让AS为你自动导入类***.com/questions/22272524/… 感谢您的评论!我相信我的自动导入已经设置好了,它确实适用于所有其他类(到目前为止,我自己没有编写一个导入)。 imgur.com/VcVFXp4还有其他想法吗? 你应该在graphql/下建立一个包目录树。生成的代码将进入该包。见this sample project。 啊,太棒了@CommonsWare!如果您将此添加为实际答案,我会将其标记为已接受,您将获得积分:) 您能否解决 ANDROID_HOME 问题? 【参考方案1】:

您的项目在问题中的结构方式是,您的 GraphQL 文档和模式 JSON 直接位于 graphql/ 中。这将导致您生成的 Java 类不被放入包中。这可能不是你想要的。

Apollo-Android 采用用于某些其他形式的源代码(Java、AIDL 等)的方法,并使用包目录树。在this sample project(来自this book)中,我在graphql/com/commonsware/graphql/trips/api 中有我的GraphQL 文档和模式JSON。因此,我生成的 Java 类位于 com.commonsware.graphql.trips.api 包中。

因此,为您希望生成的代码进入的任何 Java 包设置一系列子目录,并将 GraphQL 文档和模式 JSON 移动到那里。

【讨论】:

以上是关于如何在 Android Studio 中从 Apollo Client (GraphQL) 导入生成的类的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中从 Firebase 中查找特定值的计数?

如何在android studio中从0.000000、0.000001、......格式连续增加数字

如何在 Android Studio 中从 Apollo Client (GraphQL) 导入生成的类

如何使用firebase在android studio中从一个用户向另一个用户发送通知[重复]

如何从列表视图中从 sqlite 检索数据单击并查看不同的活动 android studio

在android studio中从git添加PullToRefresh [重复]