Я пытаюсь добавить ApolloGraphql в свой проект Android, но когда я пытаюсь перестроить проект, я получаю:
org.gradle.api.UncheckedIOException: java.io.FileNotFoundException: /Users/mcebotari/Downloads/Projects/Barcloud/app/build/generated/source/apollo/generatedIR/snapshotDebug/src (Is a directory)
в build.gradle я добавил необходимые зависимости:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.apollographql.android'
android {
compileSdkVersion 27
defaultConfig {
applicationId "barcloud.com"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
//Design
implementation 'com.github.rasoulmiri:buttonloading:v1.0.8'
//Vision Library
implementation 'com.google.android.gms:play-services-vision:15.0.2'
// RxJava
implementation "io.reactivex.rxjava2:rxjava:2.1.16"
implementation "io.reactivex:rxandroid:1.2.1"
implementation "com.jakewharton.rxbinding:rxbinding:1.0.1"
implementation "com.squareup.retrofit2:adapter-rxjava:2.3.0"
implementation 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:1.0.1'
//RxPermissions
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'
//Retrofit
implementation "com.squareup.retrofit2:retrofit:2.4.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.4.0"
implementation "com.squareup.retrofit2:converter-gson:2.4.0"
// rxandroid
implementation "io.reactivex.rxjava2:rxandroid:2.0.1"
// Dagger
implementation "com.google.dagger:dagger:2.12"
kapt "com.google.dagger:dagger-compiler:2.12"
//GraphQL
implementation 'com.apollographql.apollo:apollo-runtime:1.0.0-alpha'
implementation 'com.apollographql.apollo:apollo-rx2-support:1.0.0-alpha'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
а также зависимость:
classpath 'com.apollographql.apollo:apollo-gradle-plugin:1.0.0-alpha'
Пытаясь перестроить проект, я получаю:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:generateDebugApolloClasses'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
...
Caused by: org.gradle.api.UncheckedIOException: java.io.FileNotFoundException: /Users/mcebotari/Downloads/samples/Barcloud/app/build/generated/source/apollo/generatedIR/debug/src (Is a directory)
at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:57)
...
Caused by: java.io.FileNotFoundException: /Users/mcebotari/Downloads/samples/Barcloud/app/build/generated/source/apollo/generatedIR/debug/src (Is a directory)
at java.io.FileInputStream.open0(Native Method)
Это файлы graphql из официального образца - GithuntFeedQuery.graphql и их schema.json, вставленные в основную папку.
Любые идеи?
Была та же проблема с конфигурацией prodRelease, исправленная переименованием аромата prod. В приложениях build.gradle у меня есть:
buildTypes {
debug {...}
release {...}
}
productFlavors {
dev {...}
stage {...}
prod {...}
}
что дает мне 6 вариантов сборки
devDebug
devRelease
stageDebug
stageRelease
prodDebug
prodRelease
топ-5 собирались без проблем локально и на CI, в то время как prodRelease выдавал ту же ошибку, что вы описали, без какого-либо логического объяснения. Файлы GraphQL одинаковы для dev, stage и prod ... Я пробовал создавать определенные папки для "prod", затем для "prodRelease", проверял их права доступа - все равно для всех вариантов, ничего не помогло. И prodDebug все время строился правильно. Затем я переименовал prod flavour (не забудьте соответствующим образом переименовать папку с файлами graphql), и теперь он работает как шарм.
При исследовании этой проблемы я пришел к двум решениям:
Удалите apollo из вашего проекта, (by editing your gradle files) очистите ваш проект и снова добавьте apollo.
Попробуйте изменить версию apollo в файле gradle вашего проекта, т.е. мой работал с
classpath 'com.apollographql.apollo:gradle-plugin:0.3.1
и изначально это был 0.3.2.