【问题标题】:Cannot resolve rxjava2 with gradle 3.0无法使用 gradle 3.0 解析 rxjava2
【发布时间】:2017-11-14 14:22:42
【问题描述】:

Hare 是我的应用 gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.atumanin.testandroidannotations"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.1.18"

        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
}

这是我的项目 gradle:

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

如果我尝试构建项目,我会收到错误:

Could not resolve io.reactivex.rxjava2:rxjava:2.1.6.

Could not resolve io.reactivex.rxjava2:rxandroid:2.0.1.

我尝试清理、重建项目并使缓存无效。没有什么帮助。我还尝试使用compile 而不是implementation。我也尝试了这两个库的不同版本,也没有成功。

【问题讨论】:

  • 你是在离线模式下运行 gradle 吗?
  • 不,我也在应用程序中使用androidAnnotations,只是跳过了依赖项以使sn-p更短。他们根本无法离线编译。
  • 我的意思是应用设置中的 Android Studio Gradle“离线工作”复选框,实际上并不是离线。 (或在 gradle 调用上设置 --offline 的其他方法。)
  • github.com/ReactiveX/RxAndroid他们说rxAndroid的最新版本的rxJava只有2.1.5
  • 但是在repository(这个链接也在github页面上)你可以看到最新的2.1.6版本。无论如何,我已经在下面的 cmets 中回答了,更改为 2.1.5 热帮助

标签: android android-gradle-plugin rx-android rx-java2


【解决方案1】:

会报错,因为rxjava的官方发布是2.1.5

只需更改以下代码行

implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxjava:2.1.5'

Official documentation

【讨论】:

  • 不工作。无论如何,正如您在我的问题中看到的那样,io.reactivex.rxjava2:rxandroid:2.0.1 也找不到。不是版本问题。
【解决方案2】:

变化

implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

api 'io.reactivex.rxjava2:rxjava:2.x.x'
api 'io.reactivex.rxjava2:rxandroid:2.0.1'

为我工作

【讨论】:

  • 我不知道你的解决方案是如何工作的,但我已经能够摆脱警告,但还没有完成太多的编码。鉴于我在您回答 2 年后几乎指的是这个,我尝试用 3 替换版本,但警告再次出现。谢谢!
【解决方案3】:

我找到了解决方案。问题是我的代理,它阻止了https,我需要使用http 版本的存储库。所以而不是:

repositories {
        jcenter()
    }

我现在用:

repositories {
        jcenter {
            url "http://jcenter.bintray.com/"
        }
    }

现在可以编译了。

【讨论】:

【解决方案4】:

@link https://github.com/ReactiveX/RxAndroid

// 因为 RxAndroid 版本很少,所以推荐你也 // 明确依赖 RxJava 的最新版本进行错误修复和新功能。 //(最新 3.x.x 版本见https://github.com/ReactiveX/RxJava/releases

// Step 1 : in side build.gradle(Module:app)
 implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
// Step 2 : in side build.gradel(Project:ProjectName)  
 allprojects {
repositories {
    google()
    jcenter()
    maven { url "https://jitpack.io" }
    jcenter {
        url "http://jcenter.bintray.com/"
    }
   }
}

【讨论】:

    【解决方案5】:

    只需尝试取消选中您的

    中的离线模式

    设置 -> Gradle

    再试一次。这对我有用

    【讨论】:

    • 在离线模式下,您将无法解决所有依赖关系,而不仅仅是特定的一两个
    • 取消勾选意味着在在线模式下构建你的 gradle
    • 取消勾选表示之前已勾选,我的 gradle 处于离线模式。在离线模式下,您将无法解决所有依赖关系,而不仅仅是特定的一两个。在我的问题中,我只遇到了两个特定的依赖项。在我 17 年 11 月 14 日的评论中,我已经提到了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多