I am having difficulty in the initial implementation. My problem is that the following build could not generate the apollo directory.
With this gradle (app level)
plugins {
  id 'com.android.application'
  id 'kotlin-android'
  id 'kotlin-kapt'
  id 'com.apollographql.apollo'
}
android {
  compileSdk 31
  defaultConfig {
    applicationId "com.xxxx.xxxx"
    minSdk 21
    targetSdk 31
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  }
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  kotlinOptions {
    jvmTarget = '1.8'
  }
}
dependencies {
  implementation 'androidx.core:core-ktx:1.6.0'
  implementation 'androidx.appcompat:appcompat:1.3.1'
  implementation 'com.google.android.material:material:1.4.0'
  implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
  testImplementation 'junit:junit:4.+'
  androidTestImplementation 'androidx.test.ext:junit:1.1.3'
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
  // The core runtime dependencies
  implementation"com.apollographql.apollo:apollo-runtime:2.5.9"
  // Coroutines extensions for easier asynchronicity handling
  implementation"com.apollographql.apollo:apollo-coroutines-support:2.5.9"
}
apollo {
  generateKotlinModels.set(true)
}
And this gradle
buildscript {
  repositories {
    google()
    mavenCentral()
  }
  dependencies {
    classpath "com.android.tools.build:gradle:7.0.2"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"
    classpath "com.apollographql.apollo:apollo-gradle-plugin:2.5.9"
  }
}
task clean(type: Delete) {
  delete rootProject.buildDir
}
Using this schema.graphql
schema {
    query: Query
}
type Continent {
    code: ID!
    countries: [Country!]!
    name: String!
}
type Country {
    capital: String
    code: ID!
    continent: Continent!
    currency: String
    emoji: String!
    emojiU: String!
    languages: [Language!]!
    name: String!
    native: String!
    phone: String!
    states: [State!]!
}
type Language {
    code: ID!
    name: String
    native: String
    rtl: Boolean!
}
type Query {
    continent(code: ID!): Continent
    continents(filter: ContinentFilterInput): [Continent!]!
    countries(filter: CountryFilterInput): [Country!]!
    country(code: ID!): Country
    language(code: ID!): Language
    languages(filter: LanguageFilterInput): [Language!]!
}
type State {
    code: String
    country: Country!
    name: String!
}
enum CacheControlScope {
    PRIVATE
    PUBLIC
}
input ContinentFilterInput {
    code: StringQueryOperatorInput
}
input CountryFilterInput {
    code: StringQueryOperatorInput
    continent: StringQueryOperatorInput
    currency: StringQueryOperatorInput
}
input LanguageFilterInput {
    code: StringQueryOperatorInput
}
input StringQueryOperatorInput {
    eq: String
    glob: String
    in: [String]
    ne: String
    nin: [String]
    regex: String
}
"The `Upload` scalar type represents a file upload."
scalar Upload
generated by this configuration
{
  "name": "Untitled GraphQL Schema",
  "schemaPath": "schema.graphql",
  "extensions": {
    "endpoints": {
      "Default GraphQL Endpoint": {
        "url": "https://countries.trevorblades.com/",
        "headers": {
          "user-agent": "JS GraphQL"
        },
        "introspect": false
      }
    }
  }
}
I can't generate the Apollo folder

Why did you put the code you posted as schema.graphql ?
You can found the following example in this GitHub repo.
(It's a sample application I made using trevorblades countries API and Apollo GraphQL 2.5.9, so i think it fits your needs perfectly)
First of all you need to download the server's schema with the following command (replace the path with your app's name and package)
mkdir -p app/src/main/graphql/com/example/rocketreserver/
./gradlew :app:downloadApolloSchema --endpoint='https://countries.trevorblades.com/' --schema='app/src/main/graphql/com/example/rocketreserver/schema.json'
This will generate the schema.json in the specified path, after which you can write all the queries you need creating files like countries.graphql or continents.graphql.
Make sure you put them in the same folder as schema.json.

In my example you can find a query for the list of countries and one for the country detail.
CountryList.graphql
query CountriesList {
  countries {
    code
    name
    continent{
      code
      name
    }
    languages{
      code
      name
    }
    emoji
  }
}
CountryDetail.graphql
query CountryDetail($code:ID!) {
  country(code: $code) {
    code
    name
    phone
    continent{
      code
      name
    }
    capital
    currency
    languages{
      code
      name
    }
    emoji
  }
}
At this point you just need to build the project to generate the apollo directory and the models you defined.

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With