ยังคงได้รับคำเตือน: การกำหนดค่า 'คอมไพล์' ล้าสมัยและถูกแทนที่ด้วย 'การใช้งาน'


332

ฉันได้แทนที่ทุกสิ่งที่เกิดขึ้นcompileโดยimplementationในโครงการของbuild.gradleฉัน แต่ฉันยังคงได้รับคำเตือนนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันพยายามค้นหา "คอมไพล์" ในโครงการทั้งหมด แต่ไม่พบที่ตรงกัน แล้วอะไรคือสาเหตุ?


คุณใช้ห้องสมุดท้องถิ่นที่ใช้ 'คอมไพล์' ยัง
Devsil

@Devsil เป็นไปได้ ... แต่ฉันจะหาได้อย่างไร ฉันลองใช้ Find in Path ในโครงการทั้งหมด แต่ไม่พบเหตุการณ์ใด ๆcompile..
Rob

2
หากคุณใช้ไลบรารี่ในระบบคุณจะเห็นไฟล์ gradle.build ที่อยู่ในวิวเวอร์โปรเจ็กต์ทางด้านขวาของหน้าต่าง Android Studio ในไฟล์ build.gradle นั้นอาจมี "คอมไพล์" ตรงข้ามกับการใช้งาน หากไฟล์ build.gradle ใด ๆ ที่คุณเห็นไม่มีอยู่ในนั้น อาจเป็นห้องสมุดที่คุณใช้ซึ่งไม่ใช่ของท้องถิ่นจึงไม่อนุญาตให้คุณเข้าถึงเพื่อเปลี่ยนแปลงสิ่งนั้น ดังนั้นการเตือนนี้สามารถเพิกเฉยได้ในตอนนี้
Devsil

1
Gradle ควรให้หมายเลขบรรทัดที่มีปัญหาเกิดขึ้น
Yetti99

ลอง: stackoverflow.com/questions/48623244/...และFailed to resolve: android.arch.persistence.room:runtime:1.1.1 Open File Show in Project Structure dialogพยายามที่จะเปลี่ยนแปลงรุ่น1.0.0
Saeid

คำตอบ:


496

ฉันได้อัปเดตcom.google.gms:google-servicesจาก3.1.1เป็น3.2.0และคำเตือนหยุดปรากฏขึ้น

buildscript {

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

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    classpath 'com.google.gms:google-services:3.2.0'
    }
}

1
การกำหนดค่า 'คอมไพล์' ล้าสมัยและถูกแทนที่ด้วย 'การใช้งาน' จะถูกลบออกในตอนท้ายของปี 2018 เพื่อให้ชัดเจนฉันไม่ได้ใช้บริการของ Google ใด ๆ {classpath 'com.android.tools.build:gradle:3.1.0'}
Amit_android

ฉันได้รับ "ไม่พบ com.google.gms: google-services: 3.2.0" เมื่อฉันลองทำสิ่งนี้ อัปเดต: การเปลี่ยนเป็นการเตือนคำเตือนผ้าสำลีด้วยตนเองเมื่อฉันเปลี่ยนเป็น 3.1.1 จากนั้น Alt + Enter เพื่อใช้การแก้ไขอัตโนมัติเปลี่ยนเป็น com.google.gms: google-services: 3.2.0 โดยไม่มีข้อผิดพลาดในการซิงค์ ฉันไม่แน่ใจว่าความแตกต่างคืออะไร แต่มันน่าผิดหวัง
jwehrle

เอาล่ะฉันเชื่อว่าฉันเข้าใจความแตกต่าง ฉันเปลี่ยน Project และโมดูล build.gradle gms classpath เป็นเวอร์ชัน 3.2.0 มันคือการเปลี่ยนแปลงโมดูลที่ทำให้เกิดปัญหา เปลี่ยนเฉพาะเวอร์ชัน build.gradle gms classpath ของรุ่น
jwehrle

ฉันยังขาด jcenter () repo! โครงการเก่ามากและไม่มี repo รวมอยู่ด้วย!
Yani2000

คุณหมายความว่าฉันควรเพิ่มบรรทัดนั้นด้วยตนเองลงในไฟล์หรือไม่
สวัสดีทุกคืน

125

ฉันมีคำเตือนเดียวที่เกิดขึ้นกับ com.google.gms: google-services

ทางออกคือการอัพเกรด classpath com.google.gms: google-services เป็น classpath 'com.google.gms: google-services: 3.2.0' ในไฟล์ใน build.gradle โครงการ:

ป้อนคำอธิบายรูปภาพที่นี่

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

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.2.0'
    }
}

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

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

ใน Android Studio เวอร์ชัน verion 3.1 การอ้างอิงคำว่าถูกแทนที่เพื่อการใช้งาน

การอ้างอิงกับคำเตือนใน android studio 3.1

dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            compile 'com.android.support:appcompat-v7:27.1.0'
            compile 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }

OKใน Android studio 3.1

    dependencies {
            implementation fileTree(dir: 'libs', include: ['*.jar'])
            implementation 'com.android.support:appcompat-v7:27.1.0'
            implementation 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    }

Gradel สร้างโดย Android Studio 3.1 สำหรับโครงการใหม่

Gradel สร้างโดย Android Studio 3.1 สำหรับโครงการใหม่

เยี่ยมชม https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

สำหรับรายละเอียดhttps://docs.gradle.org/current/userguide/declaring_dependencies.html


โปรดทราบว่า "testCompile" เปลี่ยนเป็น "testImplementation"
AJW

คำตอบส่วนใหญ่และคำตอบที่ได้รับความนิยมเช่นกันกำลังมุ่งเน้นไปที่ com.google.gms: google-services แต่ทั้งหมดนี้เกี่ยวกับการอัปเดตรูปแบบการตั้งชื่อแบบเก่าในไฟล์ gradle ทั้งสอง
kommradHomer

32

ฉันอัปเดต com.google.gms: google-services จาก 3.2.0 เป็น 3.2.1 และคำเตือนหยุดปรากฏ

 buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'com.google.gms:google-services:3.2.1'

    }
}

คุณเพียงแค่ต้องเปลี่ยนรุ่นเหมือนฉันมี 'com.google.gms: google-services: 3.2.0' นี้คุณต้องเปลี่ยน 3.2.0 ด้วย 3.2.1
Prateek218

ขอบคุณฉันได้อัปเดตคลาสที่ไม่ถูกต้องนั่นเป็นสาเหตุที่ฉันได้รับข้อผิดพลาด
Jhorra

2
ผมมีรุ่นclasspath 'com.google.gms:google-services:4.1.0'ไม่มีการปรับปรุงมากที่สุด 3.2.0แต่ใช่มันเป็นมากกว่า ยังไม่มีความละเอียด!
sud007

@ sud007 คุณสามารถอธิบายได้บ้างว่าปัญหาที่คุณเผชิญหรือโพสต์ build.gradle ของคุณ (ระดับโครงการ)
Prateek218

22

การใช้บริการ Google gms เวอร์ชันล่าสุดที่แก้ไขแล้วสำหรับฉัน

ใน build.gr ระดับโครงการ:

buildscript {
    ...
    dependencies {
        classpath 'com.google.gms:google-services:3.2.1'
        ...  
    }
}

18

เปิดไฟล์ build.gradle ของคุณที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

นี่เป็นวิธีการเขียนไลบรารีการพึ่งพา (สำหรับ gradle version 2 และด้านล่าง):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile files('libs/volley.jar')
    compile 'com.android.support:support-v4:21.+'
}

นี่เป็นวิธีใหม่ (ขวา) ของการนำเข้าการพึ่งพาสำหรับ gradle เวอร์ชั่น 3:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation files('libs/volley.jar')
    implementation 'com.android.support:support-v4:21.+'
}

1
ขอบคุณเพื่อน! ดูเหมือนว่าจะเป็นคำตอบที่ทันสมัยที่สุด ณ เดือนมกราคม 2562
NaturalBornCamper

คำตอบนี้มีประโยชน์สำหรับผู้ที่ประสบปัญหานี้เป็นครั้งแรก แม้ว่า OP มีคำถามที่แตกต่างกันซึ่งบอกว่าแม้หลังจากการเปลี่ยนแปลงเหล่านั้นข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น
sud007

13

ตอบกลับโดย google: https://issuetracker.google.com/issues/74048134

จะมีบางส่วนที่ยังคงใช้คอมไพล์ตรวจสอบการพึ่งพาแอปพลิเคชันของคุณและการพึ่งพาสกรรมกริยาอย่างระมัดระวัง


1
ฉันลบการอ้างอิงทั้งหมดใน ALL build.gradles สำหรับโครงการของฉันและยังได้รับข้อผิดพลาด
behelit

3
แก้ไข: มันเกิดจากอาณาจักรใช้รุ่นเก่า
behelit

7

https://issuetracker.google.com/issues/72479188ระบุว่าบางครั้งปลั๊กอินสามารถแนะนำการพึ่งพา "คอมไพล์" และนั่นคือสิ่งที่ทำให้เกิดการเตือน อาจเป็นเรื่องง่ายที่สุดที่จะติดดาวปัญหานั้นและรอจนกว่าพวกเขาจะแก้ไขเพื่อชี้ให้เห็นว่าปลั๊กอินใดเป็นสาเหตุของปัญหา


6

ไม่จำเป็นต้องลบบรรทัด ดังที่ Jkrevis เขียนให้อัปเดต com.google.gms: google-services เป็น 3.2.0 และจะหยุดคำเตือน


1
คุณได้แทนที่ 'รวบรวม' โดย 'การนำไปใช้' ทุกครั้งใน build.gradle ของโครงการ (โมดูล: แอป) และอัปเดต com.google.gms: google-services ใน build.gradle (โครงการ) เป็น 3.2.0 หรือไม่
Tom

6

com.google.gms:google-servicesฉันพบปัญหานี้โดยไม่ต้องใช้ วิธีการแก้ปัญหาแบบนี้ดังต่อไปนี้:

  1. ตรวจสอบbuild.gradleไฟล์ของโครงการและโมดูลทั้งหมด หรือเพียงแค่รวบรวมคำสำคัญในการค้นหาทั่วโลก 'รวบรวม' เพื่อค้นหาสาเหตุที่ทำให้เกิดคำเตือนนี้
  2. หากวิธีการด้านบนไม่สามารถแก้ไขคำเตือนนี้ได้ให้ใช้คำสั่ง CLI ./gradlew assembleDebug -d > gradle.log
    พิมพ์รายละเอียดข้อมูลการดีบักไปยังไฟล์ที่ชื่อgradle.logหรือสิ่งอื่นใดเนื่องจากข้อมูลมีมากเกินไป จากนั้นค้นหาคำว่า "คำเตือน" เพื่อค้นหาตำแหน่งgradle.logโดยปกติแล้วคุณสามารถค้นหาสิ่งที่พึ่งพาหรือปลั๊กอินทำให้เกิดคำเตือน

2
ฉันคิดว่านี่เป็นคำตอบทั่วไป ปัญหาอาจเกิดจากการพึ่งพาของคุณคนใดคนหนึ่งหรือหลายคน
Rasmusob

5

ในกรณีของฉันมันเป็นสาเหตุจากไลบรารีของ Realm หลังจากฉันอัปเดตเป็นรุ่นล่าสุด (5.1.0 จนถึงปัจจุบัน) ของ Realm ปัญหาได้รับการแก้ไข!

นี่คือสคริปต์ gradle ที่ใช้งานได้:

buildscript {
repositories {
    jcenter()
    google()
}

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath "io.realm:realm-gradle-plugin:5.1.0"
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:3.2.1'
  }
}

3

เพียงแค่อัปเดตเวอร์ชันบริการ google ไม่ได้ผลสำหรับฉัน

  • ทำให้แน่ใจว่าทั้งหมดเป็นครั้งแรกการอ้างอิงของคุณจะถูกแทนที่ด้วยcompileimplementation
  • อัปเดตการอ้างอิงทั้งหมดในโครงการของคุณ เพราะหากมีผู้ที่คุณพึ่งพาcompileโครงการของคุณจะแสดงข้อผิดพลาดนี้ ดังนั้นอัปเดตเวอร์ชันการอ้างอิงทั้งหมด

2

ไปที่ไฟล์ build.gradle ของคุณในระดับโครงการคุณจะพบบรรทัดต่อไปนี้ถูกไฮไลต์

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.4'  //place your cursor over here 
    //and hit alt+enter and it will show you the appropriate version to select


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    classpath 'com.google.gms:google-services:4.0.2' //the same as previously
}

2

ในกรณีของฉันมันเป็นการอ้างอิงแบบเก่าที่ใช้การคอมไพล์สำหรับการพึ่งพาสกรรมกริยา: com.jakewharton.hugo

หลังจากลบมันออกจากระดับเสียงของฉันมันรวบรวม


1

วิธีแก้ปัญหาในการแก้ปัญหานี้สำหรับฉันที่ฉันใช้ Gradle รุ่นเก่ากว่าซึ่งสามารถพบได้ที่นี่ :

ฉันใช้ gradle-3.0-rc-1-src แต่ผู้อื่นอาจใช้งานได้เช่นกันแม้ว่าอาจจะไม่ใหม่กว่ารุ่น 3.0

ก่อนอื่นแยกไฟล์ zip ไปยังทุกที่ที่คุณต้องการ

จากนั้นไปที่ File -> Settings -> Build, Execution, Deployment -> Gradle และเปลี่ยนการตั้งค่าเป็น Use gradle distribution หลังจากนั้นตรวจสอบให้แน่ใจว่า Gradle Home-field ชี้ไปที่ไดเรกทอรี. Gradle ในไดเรกทอรีที่คุณเพิ่งซิปไป

สร้างโครงการใหม่และทุกอย่างน่าจะโอเค


0

ฉันได้ลองเปลี่ยนบริการ google gms ไปเป็นcom.google.gms:google-services:3.2.1เวอร์ชั่นล่าสุดใน Android Studio 3.0.1 แล้ว แต่ยังคงมีคำเตือนอยู่

ตามคำแนะนำของคอมไพเลอร์ผมเปลี่ยนทุกcompileการอ้างอิงไปimplementationและtestCompileจะtestImplementationเป็นเช่นนี้ ..

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:mediarouter-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.google.firebase:firebase-ads:12.0.1'
implementation 'com.google.firebase:firebase-crash:12.0.1'
implementation 'com.google.firebase:firebase-core:12.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
implementation 'com.google.firebase:firebase-perf:12.0.1'
implementation 'com.google.firebase:firebase-appindexing:12.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

และในที่สุดก็มีการลบคำเตือน!


0

คุณสามารถทำได้สองตัวเลือกนี้:

  1. เพิ่ม classpath 'com.google.gms: google-services: 3.2.0' ในโครงการของคุณ: build.gradle dependencies และ
  2. แทนที่โมดูลของคุณ: build.gradle พึ่งพาจากบ่นกับการใช้งานและคุณจะไม่ได้รับข้อความเตือนใด ๆ

0

เพียงเพิ่มbuild.gradleจากbuild script

classpath 'com.google.gms:google-services:3.2.0'

และทั้งหมดของการอ้างอิงเปลี่ยนไป"compile""implementation"

ที่ทำงานจากฉัน


โปรดทราบว่าหากคุณกำลังใช้งานclasspathคุณต้องใช้งานภายในbuildscriptบล็อก ยิ่งไปกว่านั้นไม่สามารถใช้implementationภายในbuildscriptบล็อก
ChumiestBucket

0

รุ่นปัจจุบันคือ4.2.0 :

buildscript {

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

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:4.2.0'
}

}


0

สำหรับฉันเปลี่ยนการรวบรวมเพื่อการใช้งานแก้ไขมัน

ก่อน

compile 'androidx.recyclerview:recyclerview:1.0.0'
compile 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

หลังจาก

implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'

-2

หวังว่าคุณจะได้รับผลกระทบกับ build.gradle (แอป) ถ้าเป็นเช่นนั้นทำตามขั้นตอนนี้

แทนที่คอมไพล์ด้วยandroidTestImplementationใน build.gradle

androidTestImplementation 'com.android.support:appcompat-v7:27.1.1'
androidTestImplementation 'com.android.support:design:27.1.1'

ง่ายมาก! หวังว่าสิ่งนี้จะแก้ปัญหา


-3

ในกรณีของฉันปัญหาคือปลั๊กอิน gradle บริการของ Google ที่มีบรรทัดต่อไปนี้ในไฟล์ gradle:

ใช้ปลั๊กอิน: 'com.google.gms.google-services'

การลบสิ่งนี้สามารถแก้ไขปัญหาได้


-7

ไปที่คุณสร้าง build (ระดับแอป)

แอพโมดูล build.gradle

และแทนที่คำว่า"รวบรวม"โดย"การใช้งาน"

มันจะทำงานได้ 100%


6
คำตอบนี้ไม่มีประโยชน์ OP ระบุว่าสิ่งนี้ได้ทำไปแล้วดังนั้นจึงไม่สามารถช่วยได้
NightOwl888

1
ฉันมีปัญหาเดียวกันฉันไม่สามารถสร้างแอปของฉัน apk bcoz จากนั้นคำตอบนั้นแก้ปัญหาของฉันได้
Ayoub

นี่ไม่ใช่สถานการณ์เดียวกัน OP ระบุไว้แล้วว่าเขาทำเช่นนี้แล้ว (ฉันอยู่ในเรือลำเดียวกันด้วย) เนื่องจากการ
พึ่งพา

OP กล่าวว่า "ฉันได้แทนที่การคอมไพล์ด้วยการใช้งานทุกครั้ง"
mapo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.