Android Studio使用Apollo下载Star Wars API Schema时遇Gradle版本错误
解决Apollo下载Star Wars GraphQL Schema时的Gradle版本兼容问题
尝试通过Apollo 3.8.2下载Star Wars GraphQL API的Schema时,遇到Gradle版本相关错误,已更换JDK和Gradle版本但未解决。以下是针对配置问题的解决方案:
问题分析
从提供的Gradle配置来看,主要存在以下版本不匹配和配置缺失问题:
- Hilt依赖版本不一致(项目级2.44 vs App模块2.48)
- Navigation插件与依赖版本不匹配(项目级2.6.0 vs App模块2.7.5)
- Apollo插件未配置Schema下载的endpoint
- Apollo插件版本在App模块单独声明,未统一到项目级管理
解决方案
1. 统一项目级插件版本
修改项目根目录下的build.gradle,确保所有插件版本与App模块使用的依赖版本一致:
plugins { id("com.android.application") version "8.1.0" apply false id("org.jetbrains.kotlin.android") version "1.8.0" apply false id("com.google.dagger.hilt.android") version "2.48" apply false id("androidx.navigation.safeargs.kotlin") version "2.7.5" apply false id("com.apollographql.apollo3") version "3.8.2" apply false }
2. 修正App模块配置
修改App模块的build.gradle,统一Hilt版本,添加Apollo Schema下载配置:
plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.apollographql.apollo3") id("com.google.dagger.hilt.android") kotlin("kapt") id("androidx.navigation.safeargs.kotlin") } apollo { service("service") { packageName.set("com.softcross.starwars") // 配置Star Wars GraphQL的Schema下载地址 downloadSchemaFrom.set("https://swapi-graphql.netlify.app/.netlify/functions/index") } } android { namespace = "com.softcross.starwars" compileSdk = 34 defaultConfig { applicationId = "com.softcross.starwars" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { isMinifyEnabled = 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 { //Android Core implementation("androidx.core:core-ktx:1.12.0") //Android AppCompat implementation("androidx.appcompat:appcompat:1.6.1") // Material implementation("com.google.android.material:material:1.10.0") // Fragment implementation("androidx.fragment:fragment-ktx:1.6.2") // Picasso implementation("com.squareup.picasso:picasso:2.8") // Navigation Component implementation("androidx.navigation:navigation-fragment-ktx:2.7.5") implementation("androidx.navigation:navigation-ui-ktx:2.7.5") // Constraint Layout implementation("androidx.constraintlayout:constraintlayout:2.1.4") // Retrofit implementation("com.squareup.retrofit2:retrofit:2.9.0") // ViewModel Ktx. implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") // Gson implementation("com.google.code.gson:gson:2.10.1") // Gson Converter Factory implementation("com.squareup.retrofit2:converter-gson:2.9.0") // Apollo implementation("com.apollographql.apollo3:apollo-runtime:3.8.2") // Hilt:统一版本 implementation("com.google.dagger:hilt-android:2.48") kapt("com.google.dagger:hilt-android-compiler:2.48") // Test testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") }
3. 确认Gradle版本兼容性
Android Gradle Plugin 8.1.0需要搭配Gradle 8.0及以上版本,检查gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
若版本不符,更新到对应版本。
4. 执行Schema下载命令
在终端运行以下命令下载Schema:
./gradlew downloadServiceSchema
或在Android Studio的Gradle面板中找到Tasks > apollo > downloadServiceSchema执行。
5. 清理缓存并重建项目
执行以下命令清除Gradle缓存并重新构建项目,避免缓存干扰:
./gradlew clean build
内容的提问来源于stack exchange,提问作者Eren Mollaoğlu
相关产品推荐
相关产品推荐

