使用Apollo GraphQL客户端进行Android开发

3

我正在使用以下示例,但在添加库时出现错误:

使用Apollo GraphQL客户端进行Android开发

以下是我的build.gradle(project)文件:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

    buildscript {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.1'
            classpath 'com.apollographql.android:gradle-plugin:0.1.0'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }

    allprojects {
        repositories {
            jcenter()
            mavenCentral()
        }
    }

    task clean(type: Delete) {
        delete rootProject.buildDir
    }

以下是我的build.gradle (Module):
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example.admin.apollotest"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.1'
    testCompile 'junit:junit:4.12'

    compile 'com.apollographql.android:api:0.1.0' // the apollo runtime classes needed by auto-generated code
    compile 'com.squareup.retrofit2:retrofit:2.1.0' // retrofit2
    compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' // rxjava2 to use the Observables stuff
    compile 'com.apollographql.android:converter-pojo:0.1.0' // converts retrofit responses to pojos (ApolloConverterFactory)
}
apply plugin: 'com.apollographql.android'

apollo {
    // this tells the apollo compiler to generate actual static classes instead of just interfaces (more on that later)
    generateClasses = true
}

获取下面的错误信息:

enter image description here


现在已经太晚了,但是有一个问题:为什么不在提问时上传代码或错误的图片呢?(例如,“图片应该只用于说明无法通过其他方式清楚表达的问题,比如提供用户界面的截图。”) - Peter Mortensen
3个回答

10
错误为“找不到模式文件。请确保在sourceSet目录中存在有效的schema.json文件”。 使用 apollo-codegen download-schema 命令创建此JSON。该命令需要GraphQL端点的URL作为参数,然后是 --output 和 JSON 应存储到的路径。JSON 应该放在项目的 src/main/graphql/ 中,并且进入表示您要代码插入的Java包的子目录中(例如,--output src/main/graphql/com/commonsware/graphql/trips/api/schema.json)。因此,总体而言,您可能会有:
apollo-codegen download-schema https://graphql-demo.commonsware.com/0.1/graphql --output src/main/graphql/com/commonsware/graphql/trips/api/schema.json

我该怎么办?'apollo-codegen'不被识别为内部或外部命令、可操作的程序或批处理文件。 - user4813855
2
@JoJoRoid: apollo-codegen 是一个 Node 包。运行 npm install -g apollo-codegen 命令。这将在全局安装 apollo-codegen,因此它可用于任何您希望使用 Apollo-Android 的 Android 项目。请注意,对于全局安装,使用 -g 开关可能需要您的开发机器拥有超级用户特权(例如 sudo)。 - CommonsWare
2
请获取这个错误信息:Error:Execution failed for task ':app:installApolloCodegen'。
进程“command 'D:\AndroidStudioProject\TestApollo\app.gradle\nodejs\node-v6.7.0-win-x64\node.exe'”以非零退出值-4048结束。
- user4813855
@JoJoRoid:抱歉,我不知道那是什么意思。 - CommonsWare

2

看起来你正在使用旧版本的Apollo。那些警告已经在最近的稳定版中修复了。

我建议你进行替换。

classpath 'com.apollographql.android:gradle-plugin:0.1.0'

使用

classpath 'com.apollographql.apollo:gradle-plugin:0.3.0'

并且删除 generateClasses = true 块以及依赖项converter-pojoapollo-api,这些在最新版本中已经不再需要。

之后进行一次干净的构建。


0

Apollo CLI v2.17.2 的实现(apollo-android v1.0.2

具体来说,是针对 GitHub API 的:

apollo client:download-schema /src/main/graphql/com/graphql/example/schema.json --endpoint https://api.github.com/graphql --header "Authorization: Bearer <github-token>"

Github. 为命令行创建个人访问令牌


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接