【问题标题】:Error: when I replace compile with implementation in gradle(dependency)错误:当我用 gradle(依赖)中的实现替换编译时
【发布时间】:2020-01-20 07:43:40
【问题描述】:

我将我的 Android Studio 从 3.0.1 更新到 3.1.0

但更新后,当我构建我的项目时,它显示 2 警告

1.用实现替换编译(编译支持将在 2018 年底结束)

2。将 testCompile 替换为 testImplementaion(并且 testCompile 支持将于 2018 年底结束)

所以,最后做这些改变,但之后,它显示一些错误

build.gradle(Module:app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "biz.coolpage.aashish.app"
        minSdkVersion 17
        targetSdkVersion 27
        versionCode 4
        versionName "1.2.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:design:27.1.0'
    implementation project(':library')
}

build.gradle(Project:Abc)

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

allprojects {
    repositories {
        jcenter()
        google()
        maven {
            url "https://maven.google.com"
        }
    }
}

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

【问题讨论】:

  • 你能显示你的 build.gradle 中有什么
  • @Pulkit 用 build.gradle 更新了我的问题
  • 你能不能也展示一下你之前的 gradle 文件是什么?
  • @WoogieNoogie 在此之前,在依赖部分而不是 implementation compile 写的就是这样。
  • 能否添加第二个 build.gradle 也只是想确定一件事

标签: android android-studio updates javacompiler


【解决方案1】:

尝试在库的 gradle 中使用 api 而不是 implementation。如果您有子模块并希望以传递方式公开库,则应使用apiimplementation 将导入特定项目的库。您可能还需要添加

implementation (project(":library")) {
    transitive = true
}

例如在您的库模块的build.gradle 文件中使用:

api 'com.android.support:appcompat-v7:27.1.0' 

而不是

implementation 'com.android.support:appcompat-v7:27.1.0'

如果没有任何效果,您可以尝试使缓存无效并重新启动

【讨论】:

  • 我已经尝试使缓存失效并重新启动,但错误仍然存​​在。
  • 您是否在库的模块中添加了api 而不是implementation,例如api "com.android.support:appcompat-v7:${supportLibVersion}"
  • 谢谢,当我用 api 替换实现时,所有错误都消失了。但我想知道为什么它建议替换为implementation 而不是api
  • 如评论中所述,implementation 是项目级别的最终导入,您不能拥有传递属性,您需要拥有api 检查答案stackoverflow.com/questions/44493378/…
  • 最好将此评论链接放在您的答案中作为参考。
【解决方案2】:

去过那里; 只需确保您的 gradle 插件是最新的,并且您没有在插件源代码中添加或删除任何内容,您就可以开始了

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2018-01-02
    相关资源
    最近更新 更多