ApolloGraphql FileNotFoundException: source/apollo/generatedIR/debug/src (是一个目录)

Posted

技术标签:

【中文标题】ApolloGraphql FileNotFoundException: source/apollo/generatedIR/debug/src (是一个目录)【英文标题】:ApolloGraphql FileNotFoundException: source/apollo/generatedIR/debug/src (Is a directory) 【发布时间】:2019-01-03 13:10:09 【问题描述】:

我正在尝试将 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,粘贴在主文件夹中。

有什么想法吗?

【问题讨论】:

【参考方案1】:

与 prodRelease 配置有同样的问题,通过重命名 prod flavor 来解决。 在应用程序 build.gradle 我有:

buildTypes  
  debug ...
  release ...

productFlavors 
  dev ...
  stage ...
  prod ...

这给了我 6 个 buildVariants

devDebug
devRelease
stageDebug
stageRelease
prodDebug
prodRelease

前 5 个在本地和 CI 上构建没有问题,而 prodRelease 给了我与你描述的相同的错误,没有任何逻辑解释。 GraphQL 文件对于 dev、stage 和 prod 是相同的......我尝试为“prod”创建特定文件夹,然后为“prodRelease”创建特定文件夹,检查它们的访问权限 - 所有变体都相同,没有任何帮助。 prodDebug 一直在正确构建。然后我重命名了 prod flavor(不要忘记相应地重命名 graphql 文件夹),它现在就像一个魅力。

【讨论】:

【参考方案2】:

我在研究这个问题时遇到了两种解决方案:

    从您的项目中移除 apollo,(by editing your gradle files) 清理您的项目,然后再次添加 apollo。

    尝试更改项目 gradle 文件中的 apollo 版本, IE。我的合作过

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

原来是0.3.2

【讨论】:

以上是关于ApolloGraphql FileNotFoundException: source/apollo/generatedIR/debug/src (是一个目录)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ApolloGraphQL 中创建数组作为输入

ApolloGraphQL -- ReadQuery `Field Not Found` 错误?

ApolloGraphQL PubSub:MaxListenersExceededWarning?

为啥 NextJS 中的 ApolloGraphQL 示例使用 getStaticProps 而不是 getServerSideProps

ApolloGraphQL 和 React:组件重新挂载时避免调用查询和订阅?

ApolloGraphQL:找不到 schema.json。请明确指定。Android Studio