คอมไพเลอร์แบบอินไลน์ของ Android Studio แสดงข้อผิดพลาดสีแดง แต่การคอมไพล์ด้วย gradle ทำงานได้ดี


147

ฉันได้ตั้งค่าโครงการของฉันใน Android Studio เพื่อใช้ไลบรารี Square Wireตามคำถามนี้

Build-> ใช้Compile Projectงานได้ดี

2:03:10 PM Compilation completed successfully in 31 sec

อย่างไรก็ตามหากฉันเปิดไฟล์ Protocol Buffer ที่สร้างขึ้นหนึ่งไฟล์แพ็คเกจ Square จะไม่ถูกจดจำ

ข้อผิดพลาดในการรวบรวมอินไลน์ของ Android Studio

อาการอีกอย่างคือวิธีการที่สืบทอดมาจากMessageคลาสSquare แสดงเป็นข้อผิดพลาดในการคอมไพล์ "ไม่สามารถแก้ไขเมธอด" ในตัวแก้ไขแม้ว่าพวกเขาจะสร้างและรันได้ดีก็ตาม

ข้อผิดพลาดในการรวบรวมบรรทัดเดียวของ Android Studio

ฉันต้องทำอะไรมากกว่าเพียงแค่เพิ่มการพึ่งพาbuild.gradleสำหรับโมดูลของฉันในโครงการของฉัน


ฉันมีปัญหาคล้ายกันในการใช้ห้องสมุดของฉัน (ไม่ใช่ที่เก็บข้อมูลภายนอก) ดูว่าฉันจะแก้ไขได้อย่างไร: stackoverflow.com/a/50569818/373033
nah0y

คำตอบ:


132

ขั้นตอนต่อไปนี้ช่วย

  1. ปิดโครงการของคุณและในโฟลเดอร์โครงการของคุณลบ project/.idea
  2. ลบ~/.gradleโฟลเดอร์

เปิดโครงการอีกครั้ง ทุกสิ่งควรได้รับการแก้ไข


1
ใช้เวลากับปัญหานี้ ขอบคุณ ความผิดพลาดของฉันคือฉันเพิ่งลบ. gradle และไม่ใช่. aide
M เมื่อ

2
วิธีนี้ใช้ได้ผลสำหรับฉันลบ. gradle และ. aide จากนั้นทำการโมฆะและเริ่มต้นใหม่แก้ปัญหาของฉันได้ แล้วซิงค์กับ gradle
Pankaj

ฉันย้าย .gradleโฟลเดอร์C:\Users\Hasnain\.gradleไปยังไดเรกทอรีอื่นแล้ว หลังจากนั้นสตูดิโอ Android แสดงข้อผิดพลาดในแต่ละชั้นเรียน จากนั้นฉันทำตามขั้นตอนที่กล่าวข้างต้นแล้วปัญหาได้รับการแก้ไขแล้ว
hasnain_ahmad

38
การลบทุกอย่างใน.ideaไดเรกทอรีเป็นแนวคิดที่ไม่ดีเนื่องจากอาจรีเซ็ตการตั้งค่าโครงการทั้งหมด เพิ่งลบออก.idea/librariesและ.idea/cachesแก้ไขปัญหาให้ฉันในที่สุดหลังจากลองวิธีแก้ปัญหาอื่น ๆ ทั้งหมด
fdermishin

ทำงานได้ดีมากใน AS 3.1.3 ฉันไม่จำเป็นต้องทำให้แคชใช้ไม่ได้ หวังว่า AS จะสร้างเร็วขึ้นในตอนนี้!
คนอยู่ที่ไหนสักแห่ง

111

ขอบคุณ free3dom ที่ช่วยให้ฉันไปถูกทางที่นี่

การวินิจฉัยโรค

Sync Project with Gradle Filesตัวเลือกใน Android สตูดิโอดูเหมือนว่าจะให้Project Structureห้องสมุดได้ถึงวันที่

gradle sync

อย่างไรก็ตามในกรณีของฉันมีข้อผิดพลาด:

พบข้อผิดพลาด

การขยายลิงก์ (ไม่ชัดเจนมาก) แสดงรายละเอียด ไลบรารี wire-runtime ของฉันแสดงอยู่ในตำแหน่งที่ไม่ถูกต้อง:

ห้องสมุด

นี่ดูเหมือนจะเป็นอาการเมาค้างจากการกำหนดค่าดั้งเดิมของฉันซึ่งฉันได้นำเข้า JAR ไปยังโฟลเดอร์ libs

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

ต่อมาฉันเปลี่ยนมันให้นำเข้าโดยตรงจาก Maven Central ( ตามที่นี่ ) และดูเหมือนว่าการตั้งค่าเก่าไม่เคยถูกเขียนทับด้วยชุดใหม่

การแก้ไข

การแก้ไขคือการลบการพึ่งพาไลบรารีจากProject Structureหน้าจอและจากนั้นSync Project with Gradle Filesอีกครั้ง

รายละเอียดเพิ่มเติม

คุณยังสามารถดูเส้นทางที่ใช้กับทรัพยากรได้ด้วยการเปิดเส้นทาง.idea/libraries/wire_runtime_1_2_0.xmlโดยตรง

คนที่หักของฉันคือ:

  <component name="libraryTable">
  <library name="wire-runtime-1.2.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/MY_MODULE/libs/wire-runtime-1.2.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />

หลังจากลบและเพิ่มห้องสมุดอีกครั้งมันเปลี่ยนเป็นroot url:

      <root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.squareup.wire/wire-runtime/1.2.0/jar/44e7acbd5eb6f29698181dc3d67a60acf7efee80/wire-runtime-1.2.0.jar!/" />

ปรับปรุง

Android Studio v0.4.4 เห็นได้ชัดว่าแก้ไขข้อบกพร่องอื่น ๆที่มีอาการเดียวกันดังนั้นหากคุณมีรุ่นที่เก่ากว่าคุณอาจต้องการอัพเกรด


3
ขอบคุณ Dan J. ก่อนที่จะลองวิธีแก้ปัญหาของคุณฉันลองวิธีนี้ง่ายขึ้น (ตามฉัน) และมันใช้ได้กับฉัน: เปิดแผง Gradle ทางด้านขวาของเครื่องมือแก้ไข (ด้านบน "Maven Projects" และ "Commander") และ คลิกที่ปุ่มรีเฟรช ที่รีเฟรชการตั้งค่าโมดูล เครดิตให้กับ @Matteo Danieli (ดู: stackoverflow.com/a/17043001 )
almighty972

1
จำเป็นต้องลบการอ้างอิงไหท้องถิ่นที่แก้ไขได้สำหรับฉันขอบคุณสำหรับแรงบันดาลใจ
jhegedus

ฉันเพิ่งคลิกที่ "ซิงค์โครงการกับไฟล์ Gradle" และตอนนี้ทุกอย่างเรียบร้อยดี! ขอบคุณมาก! คุณได้บันทึกวันของฉันไว้ฮ่าฮ่า
Jorge Gabriel Siqueira

ไม่ได้ผลสำหรับฉัน แต่การลบ. gradle และ .idea ใช้งานได้
Golnar

ปัจจุบันปุ่มเดียวกันนี้แสดงเป็นไอคอนรูปช้างที่มีลูกศรชี้ลง
tm

87

ทางออกที่ง่าย

ผ่านลิงค์และมันก็ได้ผลสำหรับฉัน

  1. เลือกFileตัวเลือกจากเมนูด้านซ้ายบนของ android studio
  2. เลือกตัวเลือก: Invalidate Cache/Restartมันจะเปิดกล่องโต้ตอบ
  3. คลิกที่ปุ่มแรกพร้อมตัวเลือก: Invalidate and Restart
  4. มันจะปิด Android Studio และรีสตาร์ท นอกจากนี้มันจะเริ่มทำดัชนีโครงการอีกครั้ง

มันแก้ไขปัญหาของฉัน

ไปที่ไฟล์ > ทำให้แคช / รีสตาร์ทไม่ถูกต้อง > ทำให้เป็นโมฆะและรีสตาร์ท

แหล่งที่มาที่นี่สำหรับ youtube


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

ใช้ Android Studio 2.1.3 บน Fedora วิธีนี้ใช้ได้ผลสำหรับฉัน เพิ่มเครื่องมือ libgdx และการนำเข้ามีข้อผิดพลาด แต่ก็รวบรวมได้ดี การปิดและเปิดใหม่ไม่ทำงาน แต่การทำโมฆะและรีสตาร์ทนั้นใช้งานไม่ได้
JoeMoe1984

1
ทำงานใน AS 3.1.4! ฉันคิดว่าคำแนะนำทั้งหมดนี้เป็นวิธีที่เหมาะสมในการจัดการ มันเป็นคำสั่งเมนูของ Android Studio นั่นดีกว่าการรีเซ็ตด้วยตนเองในสภาพแวดล้อมไฟล์
Jan Bergström

ทำงานให้ฉันในวันที่ 3.5.1
Neela

44

1) คลิกที่ไอคอน gradle (ด้านขวาบน android studio)

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

2) คลิกที่ปุ่มรีเฟรชและรอให้ปัญหาได้รับการแก้ไข: D

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


บน Android Studio 3.1 + โปรดไปที่ไฟล์> ทำให้แคช / รีสตาร์ทไม่ถูกต้อง> ทำให้เป็นโมฆะและเริ่มต้นใหม่
DroidDev

17

ฉันยังคงมีปัญหาเดียวกันกับ Android Studio v3.2.1 อย่างต่อเนื่องและแยกปัญหาออกเพียงแค่ลบโฟลเดอร์ย่อยสองโฟลเดอร์ใน.ideaโฟลเดอร์นี้ (ไม่จำเป็นต้องลบทั้ง.ideaโฟลเดอร์) ในขณะที่การซิงค์แบบไล่ระดับเสียงไม่ทำงาน:

  • ./idea/caches
  • ./idea/libraries

ในกรณีส่วนใหญ่มันแก้ปัญหาของฉัน ในบางคนอาจจำเป็นต้อง“ ทำให้แคชและรีสตาร์ทไม่ถูกต้อง” หรือเปลี่ยนรุ่น Gradle
GoRoS


11

เพียงทำสิ่งนี้ในสตูดิโอ Android ของคุณ:

ไฟล์ -> ทำให้แคช / เริ่มใช้ไม่ได้ -> ทำให้ใช้งานไม่ได้และเริ่มต้นใหม่

สิ่งนี้ใช้ได้สำหรับฉัน ไม่จำเป็นต้องล้างโฟลเดอร์. /gradle หรือ ./idea


9

แฮ็กแก้ไขของฉันสำหรับสิ่งนี้ -

  1. เปิดbuild.gradleไฟล์ของคุณ
  2. ตัดทุกอย่างที่อยู่ข้างในออก dependencies{}
  3. แปะแผ่นจดบันทึกเพื่อการเก็บชั่วคราวที่ปลอดภัยเป็นพิเศษ
  4. เลือก 'ซิงค์เลย' ในbuild.gradleไฟล์
  5. รอให้การซิงค์ล้มเหลว
  6. วางการอ้างอิงของคุณกลับมา
  7. 'ซิงค์เลย' อีกครั้ง

ลองใช้วิธีแก้ปัญหามากมายและนี่เป็นสิ่งเดียวที่แก้ไขได้สำหรับฉัน


7

ฉันมีปัญหานี้หลังจากอัปเกรดเป็น Android Studio 3.1 ฉันแก้ไขปัญหาด้วยการอัพเกรดส่วนประกอบทั้งหมดที่ฉันใช้ ดังนั้นฉันจึงเปลี่ยนรายการต่อไปนี้ใน build.gradle (แอพ) ของฉัน:

  1. อัปเกรด SDK (จาก "compileSdkVersion 25" เป็น "compileSdkVersion 26" หรือสูงกว่าเมื่อคุณอ่านหมายเหตุนี้):

    // compileSdkVersion 25

    compileSdkVersion 26

    ความคิดเห็น: การเปลี่ยนแปลงนี้บังคับให้โปรแกรมดาวน์โหลด / ติดตั้ง sdk ใหม่ในระหว่างการซิงค์ครั้งถัดไป

  2. อัปเกรด appcompat-v7:

    // การใช้งาน 'com.android.support:appcompat-v7:25.4.0'

    การใช้งาน 'com.android.support:appcompat-v7:26.1.0'

  3. อัพเกรด firebase:

    // การติดตั้ง 'com.google.firebase: firebase-ads: 11.4.2'

    การใช้งาน 'com.google.firebase: firebase-core: 12.0.1'

    การใช้งาน 'com.google.firebase: firebase-ads: 12.0.1'

  4. ใน PROJECT build.gradle ให้อัพเกรด google-services:

    // classpath 'com.google.gms: google-services: 3.1.0'

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

  5. อัพเกรดเกรด (จาก 4.4 เป็น 4.6) จาก gradle-wrapper.properties: distributionUrl = https: //services.gradle.org/distribution/gradle-4.6-all.zip

หลังจากการเปลี่ยนแปลงเหล่านี้ให้ล้างโครงการแคชที่ไม่ถูกต้อง / รีสตาร์ทลบเนื้อหา. aa / ไลบรารีและซิงค์ (ไม่แน่ใจเกี่ยวกับการสั่งซื้อ แต่กิจกรรมทั้งหมดเหล่านี้สามารถแก้ไขปัญหาให้ฉันได้)


1
ส่วนประกอบอื่น ๆ ที่ไม่มีเวอร์ชั่นใหม่คืออะไร?
Amir Dadgari

ฉันไม่รู้ เหล่านี้คือส่วนประกอบที่ฉันมีในโครงการของฉัน
Pablo Alfonso

สวัสดีอาเมียร์ตามเว็บไซต์อย่างเป็นทางการเกรด 4.4 เป็นเวอร์ชั่นล่าสุดที่มีอยู่ (ณ เดือนมีนาคม 2561) คุณพบ Gradle 4.6 จากไหน
Pablo Alfonso

ฉันพบที่ตั้งของ Gradle 4.6 ฉันอัพเดตคำตอบแล้ว ขอบคุณ
Pablo Alfonso

4
ลบ .idea / ไลบรารีเนื้อหามันใช้งานได้สำหรับฉัน ขอบคุณมาก
รถรางเหงียน

7

การลบโฟลเดอร์ไลบรารีใน. aidea แก้ไขปัญหาสำหรับฉันแล้ว ตั้งอยู่ในรูท / .idea / ไลบรารีของโครงการ

ฉันใช้ Android Studio 3.1.4


2
สิ่งนี้ใช้ได้ แต่ฉันต้องทำให้ใช้การไม่ได้และรีสตาร์ทเช่นกัน
Dan Anderson

5

ด้านล่างขั้นตอนเมื่อโปรเจ็กต์สำเร็จแล้ว แต่มีคลาสที่ไม่ได้แก้ไข (การใช้คลาสทั้งหมดจะเป็นสีแดงในไฟล์ทั้งหมด)

ขั้นตอนที่ 1 ลบไฟล์. Gradle

ขั้นตอนที่ 2 ลบไฟล์. aaa

ขั้นตอนที่ 3 เปิดหน้าต่าง Android Studio ใหม่พร้อมโครงการ Android อื่น ๆในระบบของคุณและปิดโครงการของคุณโดยมีข้อผิดพลาด

ขั้นตอนที่ 3 ตอนนี้เปิด / นำเข้าโครงการอีกครั้งจากแถบเครื่องมือสตูดิโอ Android Studio -> ไฟล์ -> เปิด

หมายเหตุ:ตอนนี้เมื่อคุณอิมพอร์ตโปรเจ็กต์. .gradle ใหม่และโฟลเดอร์. aide ใหม่จะถูกสร้างอัตโนมัติพร้อมคอมไพเลอร์ที่ได้รับการแก้ไขแล้ว


2

หากคำตอบทั้งหมดข้างต้นไม่ได้ผลสำหรับคุณ เพียงลองอัปเดตการอ้างอิงของคุณเป็นเวอร์ชันล่าสุด มันใช้งานได้สำหรับฉัน


2

ฉันลองแก้ไขส่วนใหญ่ข้างต้นแล้วและสิ่งที่ใช้งานได้จริงคือการลบโฟลเดอร์. AndroidStudio config ทั้งหมดแล้วเริ่ม Android Studio ใหม่

  • ตำแหน่ง: C: \ Users \ your. ชื่อผู้ใช้

2

ฉันพบวิธีที่ง่าย

  • เปิดระดับแอป build.gradle
  • ลบการอ้างอิงที่แสดงข้อผิดพลาด & การซิงค์
  • เพิ่มการพึ่งพา & การซิงค์อีกครั้ง

เกิดข้อผิดพลาด!

ก่อน

ก่อน

หลังจาก

หลังจาก



2

ดูเหมือนว่าทุกคนใช้วิธีการที่แตกต่างกันในการแก้ไขปัญหาเหล่านี้ ฉันจะแนะนำอีกคนหนึ่งที่ฉันรู้สึกว่าเป็นการบุกรุกน้อยกว่าคนอื่น ๆ เมื่อฉันแนะนำการเปลี่ยนแปลงจากไลบรารี aar ที่ฉันรวมฉันจะเปิดไฟล์ "settings.gradle" สำหรับโครงการ

จากนั้นตัดโมดูลโครงการหลักออกจากรายการโครงการ:

include ':mainproj',

แล้วซิงค์โครงการของคุณ จากนั้นวางกลับเข้าไปในและซิงค์โครงการของคุณอีกครั้ง ฉันเชื่อว่านี่เป็นขั้นตอนเดียวกับขั้นตอนการลบด้วยตนเองบางส่วน แต่สิ่งนี้ช่วยให้คุณทำได้จาก IDE เร็วขึ้นและเจ็บปวดน้อยลง


ทำงานได้ดีสำหรับฉัน ขอบคุณ! @Jay Snayder
Shivam

2

ฉันได้รับการแก้ไขโดยวิธีด้านล่าง

วิธีที่ 1

ไฟล์> ทำให้แคช / รีสตาร์ทไม่ถูกต้อง> ทำให้เป็นโมฆะและรีสตาร์ท

วิธีที่ 2

  • หากคุณกำลังเผชิญกับข้อผิดพลาดนี้สำหรับโครงการเฉพาะให้ทำเช่นนี้
   1. Close current project
   2. Go to your project path C://User/Android studio project/your project
   3. Delete two files .gradle and .idea
  • หากคุณกำลังเผชิญกับข้อผิดพลาดนี้สำหรับทุกโครงการให้ทำเช่นนี้
1. Close Android studio
2. Go to the file C://Users/your username/
3. Delete files .gradle , .cache ,.android, .AndroidStudio3.5

1

การแก้ปัญหาเหล่านี้ไม่ได้ช่วยฉันด้วยปัญหาเดียวกันใน Android Studio 0.5.8

ฉันอธิบายคำตอบของคำถามเดียวกัน (ฉันเดา): https://stackoverflow.com/a/23891829/534698 ฉันเพิ่งลบไดเรกทอรี ~ / .AndroidStudioPreview (ใน Ubuntu) ฉันพลาดการตั้งค่า Android Studio ทั้งหมด แต่ใช้งานได้


นี่เป็นสิ่งเดียวที่ทำงานให้ฉัน Android Studio 1.0.2
Bobby Hargett

1

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

ไฟล์> โครงสร้างโครงการ


0

ฉันมีปัญหาที่คล้ายกันก่อนหน้านี้การทำให้แคชใช้ไม่ได้และการเริ่มระบบใหม่ไม่สามารถแก้ไขได้ ฉันเพิ่งทำ Gradle Sync และทุกอย่างทำงานได้ดี



0

สำหรับฉันฉันอ้างอิง jar ในไลบรารีโมดูล มันไม่สามารถแก้ไขสัญลักษณ์ในขวด ดังนั้นฉันหาวิธีแก้ปัญหาสำหรับสถานการณ์ของฉัน ใช้providedวิธี

provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')

0

คำตอบทั้งหมดข้างต้นไม่ได้ผลสำหรับฉัน ปัญหาของฉันคือการที่ฉันได้ 3 โมดูลกับ 2 ของพวกเขาที่มีชื่อแพคเกจเดียวกัน

มันก็โอเคสำหรับ android studio <= 3.2.1

สำหรับ android studio> 3.2.1 ressouce เป็นสีแดง

ฉันแก้ไขมันเช่นเดียวกับที่กล่าวถึงที่นี่ (ฉันเพิ่งทำชื่อแพคเกจ differents สำหรับแต่ละโมดูล): ใด ๆ รุ่น Android Studio> 3.2.1 แสดงทรัพยากรสีแดง แต่ก็ยังคงรวบรวม


0

ฉันได้รับปัญหาเดียวกันแล้วโดยใช้ขั้นตอนต่อไปนี้:

  1. อัปเดตเวอร์ชันไลบรารี่เป็น gradle ใด ๆ เช่น: lib_1.0.0 -> lib_1.0.0.0

  2. gradle sync

  3. การซิงค์แสดงข้อผิดพลาด

  4. คืนค่าการเปลี่ยนแปลงเวอร์ชัน lib_1.0.0.0 -> lib_1.0.0

  5. gradle sync

เปิดไฟล์ java พร้อมอิมพอร์ตเพื่อดูข้อผิดพลาดที่ถูกล้าง


0

ไม่มีวิธีใดที่เหมาะกับฉัน .. ฉันใช้วิธีถอนการติดตั้ง java จากคอมพิวเตอร์ของฉันใช้ android studio เพื่อให้แน่ใจว่าตรวจพบการถอนการติดตั้งแล้วติดตั้งอีกครั้ง

หากคุณเลือกที่จะไปทางนี้ลองเปลี่ยนเส้นทาง jdk และตั้งค่าเส้นทางใหม่ในโครงสร้างโครงการ หากไม่ได้ทำงานไปข้างหน้าและถอนการติดตั้ง Java


0

ฉันเพิ่งสร้าง Clean Project และสร้างใหม่ Project ก่อนที่จะรีสตาร์ท Android Studio เพื่อแก้ปัญหาของฉัน บางที Android Studio อาจไม่อัพเดทการอ้างอิงในอินเทอร์เฟซ

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