如何解决此问题“配置'compile'已过时,并已由'implementation'和'api'代替。”

时间:2019-03-10 08:23:44

标签: java android github android-gradle

当我尝试使用GitHub上的问题时。我放弃

  

配置'compile'已过时,已被替换为   “实现”和“ api”。

我尝试使用“材质日历视图”

  

我的礼物:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'
    defaultConfig {
        applicationId "com.mederov.timelord"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}



dependencies {
    compile 'com.applandeo:material-calendar-view:1.5.1'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    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'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.github.bumptech.glide:glide:4.4.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
    implementation 'de.hdodenhof:circleimageview:3.0.0'

}

1 个答案:

答案 0 :(得分:1)

在更高的gradle版本中,compile同时被apiimplementation所取代。

api将依赖项公开给外部模块,就像compile一样。因此,如果模块A依赖于模块B,模块C依赖于C,如果A发生了变化,则需要重新编译implementation。 Gradle团队意识到在很多情况下这是不必要的,因此它引入了C,因此,如果B仅更改依赖于它的模块,则必须重新编译,这意味着仅模块compile。这样可以缩短构建时间,并使项目更加整洁。

简而言之,如果将所有api替换为implementation,结果将是相同的,这就是警告的内容。

但是,作为经验法则,您希望尽可能使用compile,以避免对依赖项造成污染。

我将尝试首先将implementation替换为#include <iostream> int eliminareCifreImpare(int n) { if (n == 0) return 0; int newNumber = eliminareCifreImpare(n / 10); int c = n % 10; if (c % 2 == 0) newNumber = newNumber * 10 + c; return newNumber; } int main() { std::cout << eliminareCifreImpare(12345) << std::endl; } 并构建项目。

link对差异有更好的解释和可视化。