ฉันมีปัญหานี้กับแอพ Android ด้วยซึ่งขึ้นอยู่กับไลบรารี Android ของฉันเอง (ใช้ Android Studio 3.0 และ 3.1.1)
เมื่อใดก็ตามที่ฉันอัปเดต lib และกลับไปที่แอปโดยเรียกใช้ Gradle Sync Android Studio ไม่สามารถตรวจพบการเปลี่ยนแปลงโค้ดที่ฉันทำกับ lib การคอมไพล์ทำงานได้ดี แต่ Android Studio แสดงข้อผิดพลาดสีแดงบนโค้ดบางโค้ดโดยใช้ lib
หลังจากตรวจสอบฉันพบว่าเป็นเพราะ gradle ชี้ไปที่ libs เวอร์ชันเก่าที่คอมไพล์แล้ว หากคุณไปที่โครงการ / .idea / libraries / ของคุณคุณจะเห็นรายการไฟล์ xml ที่มีลิงก์ไปยัง libs เวอร์ชันคอมไพล์ของคุณ ไฟล์เหล่านี้เริ่มต้นด้วย Gradle__artifacts _ *. xml (โดยที่ * คือชื่อ libs ของคุณ)
ดังนั้นเพื่อให้ Android Studio ใช้ libs เวอร์ชันล่าสุดคุณจะต้องลบไฟล์ Gradle__artifacts _ *. xml เหล่านี้จากนั้น Android Studio จะสร้างไฟล์เหล่านี้ขึ้นมาใหม่โดยชี้ไปที่ libs เวอร์ชันที่รวบรวมล่าสุดของคุณ
หากคุณไม่ต้องการทำสิ่งนั้นด้วยตนเองทุกครั้งที่คุณคลิกที่ "Gradle sync" (ใครจะอยากทำ ... ) คุณสามารถเพิ่มงาน gradle ขนาดเล็กนี้ในไฟล์ build.gradle ของแอปของคุณ
task deleteArtifacts {
doFirst {
File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)
for (int i = 0; i < files.length; i++) {
files[i].delete()
}
}
}
และเพื่อให้แอปของคุณดำเนินการงานนี้ก่อนที่จะทำการซิงโครไนซ์แบบค่อยเป็นค่อยไปคุณเพียงแค่ไปที่หน้าต่าง Gradle จากนั้นค้นหางาน "deleteArtifacts" ภายใต้แอปของคุณ / งาน / อื่น ๆ / คลิกขวาที่มันแล้วเลือก "ดำเนินการ ก่อนการซิงค์ "(ดูด้านล่าง)
ตอนนี้ทุกครั้งที่คุณทำการ Gradle sync Android Studio จะถูกบังคับให้ใช้ libs เวอร์ชันล่าสุดของคุณ