RegisterResGeneratingTask เลิกใช้แล้วใช้ registerGeneratedFolders (FileCollection)


158

ใช้สตูดิโอ android ใหม่พร้อมปลั๊กอิน 3.0.0 Gradle ใหม่
เมื่อสร้างคำเตือนเกิดขึ้น:

registerResGeneratingTask is deprecated, use
registerGeneratedFolders(FileCollection)

1
คุณสามารถแสดงภารกิจการไล่ระดับสีได้หรือไม่? คุณมี apk splits ไหม
itzhar

โปรดแสดง Gradle ของคุณ
Jéwôm '13

คุณเคยเห็นบทความนี้อธิบายถึงปัญหาที่แน่นอน (ปัญหาที่ทราบ) และวิธีแก้ปัญหาหรือไม่ (ตีครั้งแรกบน Google.)
ashleedawg

@ashleedawg ฉันควรทำอย่างไร อัปเดต android studio หรือไม่ หรือบางห้องสมุด?
Valentin Baryshev

4
@ashleedawg วิธีแก้ปัญหาที่คุณพูดถึงคือถ้าฉันไม่เข้าใจผิดว่าอยู่กับปลั๊กอิน gradle รุ่นเก่ากว่า นี่ไม่ใช่วิธีจัดการกับการคัดค้านในระยะยาว ในระยะสั้นคำเตือนสามารถถูก <s> ละเว้น </s> ที่จำได้ แต่ไม่จำเป็นต้องดำเนินการใด ๆ ในทันที
Alex Cohn

คำตอบ:


46

จากสิ่งที่ฉันสามารถบอกได้ปลั๊กอินที่เพิ่มเข้ามาเป็นการอ้างอิง classpath จะทำให้เกิดปัญหา Ie Firebaseมีปัญหากับมัน ช้อนและกระพือเช่นกัน เมื่อทำการค้นหาโดย Googleพบว่ามี repos GitHub จำนวนมากที่มีปัญหายกตัวอย่างเช่นเดียวกันและสิ่งที่พวกเขามีเหมือนกันคือความจริงที่ว่ามันเป็นปลั๊กอินของ Gradle ผ้าที่ดูเหมือนจะเป็นสาเหตุเช่นกันดังกล่าวโดยMate *

จากสิ่งที่ฉันสามารถบอกได้ปัญหามาจาก / หลาย Gradle plugin มันสามารถถูกทริกเกอร์ด้วยรหัส Gradle ของคุณได้ แต่สิ่งนี้อาจไม่สามารถใช้ได้ถ้าโครงการของคุณเป็นแอปและไม่ใช่ปลั๊กอิน Gradle

และดังที่Alex Cohnกล่าวไว้ในความคิดเห็นการคัดค้านเป็นคำเตือน ในกรณีนี้หมายความว่าเป็นคุณลักษณะที่จะถูกลบในที่สุด ดังนั้นสำหรับตอนนี้สมมติว่ามันเป็นปลั๊กอิน (และคุณไม่ได้ทำ) คุณสามารถละเว้นได้ เมื่อถึงเวลาที่ถูกลบออกปลั๊กอินหลักส่วนใหญ่ / ทั้งหมดควรได้รับการอัปเดตเพื่อแก้ไข

และอีกครั้งมันเป็นคำเตือน; ไม่ใช่ข้อผิดพลาด คุณยังคงสามารถเรียกใช้และละเว้นได้หากไม่มีสิ่งใดที่คุณสามารถทำได้เกี่ยวกับปัญหา การปิดใช้งานเช่นปลั๊กอิน Fabric * นั้นเกินความเป็นจริงเพราะมันยังใช้ได้

ฉันไม่ได้ใช้ Fabric ด้วยตนเองและ Fabric ไม่ใช่โอเพ่นซอร์สดังนั้นฉันไม่รู้ว่านักพัฒนาแก้ไขหรือไม่

TL; DR:ปลั๊กอิน Gradle เป็นสาเหตุ มันเป็นคำเตือน (ไม่ใช่ข้อผิดพลาด) ดังนั้นการลบปลั๊กอินที่ทำให้เกิดปัญหามากเกินไป หากคุณไม่สามารถแก้ไขได้ให้ปล่อยให้มันอยู่คนเดียวตราบใดที่มันเลิกใช้แล้วในขณะนี้เท่านั้น (ไม่ถูกลบ)


หากคุณใช้ Firebase จะมีวิธีแก้ไขเฉพาะตามที่กล่าวไว้ในคู่มือการโยกย้าย (ลิงก์ในภายหลังในโพสต์นี้) ไม่รวมโมดูลฝรั่ง

classpath ('com.google.firebase:firebase-plugins:1.1.0') {
    exclude group: 'com.google.guava', module: 'guava-jdk5'
}

ปัญหานี้ตรวจพบค่อนข้างยาก จากสิ่งที่ฉันสามารถบอกได้ไม่มีปัญหาเดียวที่ทำให้เกิดปัญหากับปลั๊กอินทั้งหมดที่ฉันตรวจสอบ (และเชื่อมโยงในคำตอบนี้) หากคุณเขียนโค้ดบางอย่างที่ทำให้เกิดปัญหา (และเป็นไปได้ที่จะแก้ไขโดยเพิ่มปลั๊กอิน gradle บุคคลที่สามไม่ได้ทำให้เกิด) มันมีบางสิ่งที่คุณสามารถลองแก้ไขได้

จากสิ่งที่ฉันสามารถบอกได้ว่าสาเหตุที่แท้จริงนั้นได้รับการแก้ไขโดยการอัปเดตไฟล์ Gradle (แม้ว่าจะอยู่ในไลบรารี Spoon แต่ก็มีการแก้ไขโดยการเปลี่ยนบรรทัดที่เกี่ยวข้องTestVariant) โดยทำตามหัวข้อในคู่มือการโยกย้าย Gradle plugin 3.0.0

เอกสารทั้งหมดครอบคลุมโดยนักพัฒนาซอฟต์แวร์แต่นี่คือบางสิ่งที่ฉันคิดว่ามีความเกี่ยวข้องตามคำขอดึงที่ทำในโครงการที่มีปัญหา:

นอกเหนือจากการอัปเดตเวอร์ชั่นและปลั๊กอินของ Gradle แล้วคุณยังต้องเพิ่มgoogle()repo repositoriesด้วย

compileคือตอนนี้implementationหรือapiแต่implementationเป็นสิ่งที่แนะนำ

providedเป็นcompileOnlyและapkเป็นruntimeOnly

androidTestCompileได้กลายเป็นandroidTestImplementationและtestCompile->testImplementation

หากคุณใช้รสชาติคุณต้องใช้ขนาดรสชาติ (ครอบคลุมโดยเอกสาร)

สำหรับประเภทบิลด์คุณจะต้องใส่ทางเลือกในกรณีที่มีไลบรารี่ที่ไม่มีประเภทบิลด์นั้น สิ่งเหล่านี้ถูกกำหนดในprofileบล็อกใต้androidบล็อก

หากยังไม่ได้ดำเนินการปลั๊กอิน gradle จะต้องกำหนดก่อน หากคุณไม่มีการพึ่งพา classpath อื่น ๆ นั่นไม่ใช่ปัญหา แต่ถ้าคุณทำให้แน่ใจว่าปลั๊กอิน gradle ถูกกำหนดไว้ก่อน

ถ้าคุณใช้testVariantsตรวจสอบให้แน่ใจว่าคุณไม่ได้โทรtestedVariantในชั้นเรียน ดูเหมือนจะเป็นสาเหตุของห้องสมุดช้อน

สิ่งเหล่านี้เป็นสิ่งที่ฉันสามารถบอกได้จากการเปลี่ยนแปลงบางอย่างที่เกิดขึ้นเพื่อแก้ไขปัญหา


แต่ฉันไม่สามารถตรวจแก้จุดบกพร่องบรรทัดรหัสมันแสดงข้อผิดพลาด
Abhinav Gupta

FAILURE: บิลด์ล้มเหลวโดยมีข้อยกเว้น * เกิดข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': แอพ: compileDebugJavaWithJavac' > การรวบรวมล้มเหลว ดูผลลัพธ์ข้อผิดพลาดคอมไพเลอร์สำหรับรายละเอียด * ลอง: รันด้วยอ็อพชัน --stacktrace เพื่อรับการติดตามสแต็ก เรียกใช้ตัวเลือก --info หรือ --debug เพื่อรับเอาต์พุตบันทึกเพิ่มเติม ทำงานด้วย - สแกนเพื่อรับข้อมูลเชิงลึกเต็มรูปแบบ * รับความช่วยเหลือเพิ่มเติมที่help.gradle.org สร้างความล้มเหลวใน 4s 29 งานที่ต้องดำเนินการ: 2 ถูกดำเนินการ 27 ที่ทันสมัย
Abhinav Gupta

@AbhinavGupta นั่นไม่ใช่ stacktrace นั่นเป็นเพียงข้อความบอกคุณว่ามีบางอย่างผิดปกติ
โซอี้

แต่ฉันไม่สามารถแก้ไขปัญหานี้ได้และสาเหตุของสิ่งนี้ฉันไม่สามารถติดตั้ง apk ในอุปกรณ์ของฉันได้
Abhinav Gupta

@AbhinavGupta ดังนั้นถามคำถามใหม่เกี่ยวกับ Stack Overflow
Zoe

17

ฉันกำลังใช้บริการเล่น Gradle ปลั๊กอินกับรุ่นcom.google.gms:google-services4.2.0

ในซอร์สโค้ดเราจะเห็นว่า: ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นสำหรับฉันนั่นเป็นเหตุผลของคำเตือนของฉันและไม่สามารถลบออกได้จนกว่าปลั๊กอินจะได้รับการแก้ไข ปัญหาอยู่ที่นี่

ตามที่ระบุไว้โดย @Zoe สิ่งนี้อาจมาจาก Gradle Plugins อื่นด้วย

ดีที่สุด



10

การอัพเดตปลั๊กอิน Fabric Gradle เป็นเวอร์ชันล่าสุดจะช่วยแก้ไขปัญหานี้ได้

จากการเปลี่ยนแปลง:

  • แก้ไขคำเตือน "registerResGeneratingTask" คงที่

https://docs.fabric.io/android/changelog.html#march-15-2018


มันคืออะไรกันแน่? มันมีค่าอัพเกรดหรือไม่ มันทำให้เกิดปัญหาใด ๆ (ก่อนและหลังการปรับปรุง)? เราใช้ v2.6.8 และตอนนี้พวกเขามี v2.9.3 แต่ฉันไม่เห็นวิธีการดูในการเปลี่ยนแปลง พวกเขามีรุ่นที่แตกต่างกัน (เช่น 1.4.2 24 พฤษภาคม 2018 ")
นักพัฒนา Android

@androiddeveloper คุณกำลังสับสนปลั๊กอิน Fabric Gradle และ Crashlytics ตรวจสอบส่วนประกอบต่าง ๆ ในเมนูด้านซ้าย
Eugen Pechanec

4

ในกรณีของฉันนี้เกิดจากไลบรารีสนับสนุน Android เวอร์ชันที่ไม่ตรงกัน ฉันอัปเดตโมดูลทั้งหมดเป็นรุ่นล่าสุด (28.0.0) และแก้ไขได้


1

หลังจากติดตั้งผ้าอย่างถูกต้องปัญหานี้ได้รับการแก้ไขสำหรับฉัน

import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;

public class MyApplication extends Application {


    @Override
    public void onCreate() {
        super.onCreate();
        Fabric.with(this, new Crashlytics());

    }
}

build.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

dependencies {
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
}

repositories {
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}

1

ฉันได้รับข้อความแสดงข้อผิดพลาดนี้และอีกมากมายที่ชอบ

x-version is deprecated and use y-version instead and it'll be removed in 2019

และโครงการทั้งหมดของฉันเริ่มส่งข้อความแสดงข้อผิดพลาดเดียวกันทันที

Android studio ให้คำเตือนเกี่ยวกับโปรแกรมป้องกันไวรัสของฉัน ฉันพยายามกำหนดค่า แต่ไม่ทำงาน

ในที่สุดฉันก็ถอนการติดตั้งโปรแกรมป้องกันไวรัส QuickHeal ออกจากระบบของฉันและตอนนี้ก็เรียบร้อย


0

ทุกคำตอบอื่น ๆ ที่เกี่ยวกับปัญหาที่เกิดขึ้นกับส่วนประกอบของบุคคลที่สาม

นี่คือวิธีอัปเดตโครงการของคุณที่ใช้registerResGeneratingTaskโดยตรง:

ก่อน:

variant.registerResGeneratingTask generateIcon, ICON_DIR

หลังจาก:

variant.mergeResourcesProvider.get().dependsOn generateIcon
variant.registerGeneratedResFolders files(ICON_DIR)

0

การสร้างระดับโครงการ

ใช้การพึ่งพาบริการของ Google เวอร์ชันต่อไปนี้

dependencies {
    classpath 'com.android.tools.build:gradle:3.4.2'
    classpath 'com.google.gms:google-services:4.3.0'
    classpath ('com.google.firebase:firebase-plugins:1.1.0') {
        exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
}

แก้ไขปัญหาสำหรับฉันแล้ว


-2

สำหรับฉันคำเตือนนี้หายไปเมื่อฉันปิดปลั๊กอิน gradle ผ้าโปรดตรวจสอบว่าคุณใช้ผ้าหรือปลั๊กอินอื่นที่ฉันรับผิดชอบสำหรับคำเตือนนี้


นำผ้าออก แต่ยังคงมีคำเตือนนี้ปรากฏขึ้น
Valentin Baryshev

ฉันไม่ได้ใช้ผ้าและฉันมีข้อความนี้!
thiagolr

3
การปิดใช้งานปลั๊กอิน io.fabric ทำให้คำเตือนเหล่านี้ลดลง 8 รายการเป็น 4 ดังนั้นดูเหมือนว่ามีแหล่งข้อมูลมากกว่าหนึ่งแหล่ง
Mario Huizinga

4
com.google.gms:google-services 4.0.1& 4.0.2ทั้งทำให้เกิดการแจ้งเตือนนี้
Martin Zeitler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.