“ ไม่สามารถแก้ไขสัญลักษณ์ R” ใน Android Studio


715

ในกรณีในทุกชั้นเรียนของฉันที่ฉันอ้างอิงทุกR.id.somethingที่Rอยู่ในสีแดงและกล่าวว่า "ไม่สามารถแก้ไขสัญลักษณ์ R" นอกจากนี้ทุกครั้งที่มีการR.layout.somethingขีดเส้นใต้สีแดงและบอกว่า "ไม่สามารถแก้ไขวิธี setContentView (?)" โครงการสร้างได้ดีอยู่เสมอ มันน่ารำคาญที่เห็นสิ่งนี้ตลอดเวลา ฉันได้อ่านคำถามอื่น ๆ มากมายที่นี่เกี่ยวกับสิ่งที่คล้ายกัน แต่ส่วนใหญ่เกี่ยวข้องกับการนำเข้าโครงการจาก Eclipse ฉันใช้สิ่งที่ฉันเชื่อว่าเป็น Android Studio เวอร์ชันล่าสุดและโครงการถูกสร้างขึ้นด้วย Android Studio และทำงานได้โดยไม่มีปัญหา "ไม่สามารถแก้ไข R" ได้ ฉันอยากจะรู้ว่าอะไรทำให้เกิดสิ่งนี้ถ้าใครรู้


ในอดีตฉันมีข้อผิดพลาด xml เช่น: progressbar ไม่สามารถส่งไปยัง android.widget.textview และฉันได้แก้ไขมันโดยเพียงแค่เปลี่ยนชื่อของ textview ฉันยังไม่รู้จริงๆว่าอะไรทำให้เกิดข้อผิดพลาดในการเริ่มต้น
— ez4nick

หากคุณเปลี่ยนชื่อบางทีตอนนี้คุณกำลังพยายามใช้การอ้างอิงสตริงที่ไม่มีอยู่ใน res / strings.xml?
— ลูกตา

2
ฉันค้นหาหลายครั้งก่อนถามคำถามนี้และพบคำถามที่คล้ายกันมากมายรวมถึงคำถามที่คุณพูดถึง ฉันได้อ่านคำแนะนำในคำถามนั้นและไม่มีการนำเข้า Android.R ในไฟล์ java ใด ๆ ของฉัน
— ez4nick

2
สวัสดีทุกคนที่ฉันลืมถามคำถามนี้เพราะมันถูกถามมานานแล้ว ฉันควรจะยอมรับคำตอบของตัวเองเมื่อปีที่แล้วซึ่งตอนนี้เป็นความเห็นที่อยู่เหนือนี้ ปัญหาเกิดขึ้นกับเพียงว่า android studio นั้นอยู่ในช่วงเริ่มต้นและในฐานะนักพัฒนาใหม่ฉันไม่ควรใช้มันเลย มั่นใจได้ว่าทุกอย่างทำงานได้ดีในขณะนี้และได้รับ หากเป็นไปได้โปรดยกเลิกการลบคำตอบดั้งเดิมของฉันเพื่อให้ฉันสามารถยอมรับได้
— ez4nick

3
ไม่พบข้อผิดพลาด R ไม่ใช่ข้อผิดพลาดที่เกิดจากข้อผิดพลาด Build แก้ไขข้อผิดพลาดอื่น ๆ ของคุณและคุณควรจะปรับ
— Just_someone

คำตอบ:


720

ฉันมีปัญหานี้เช่นกัน 'gradlew clean' ที่เรียบง่ายและ 'gradlew build' นั้นง่าย


คลิกที่Build-> Clean Projectและจะทำการไล่ระดับสีให้สะอาด


56
บางครั้งคุณต้องรีสตาร์ท android studio หรืออย่างน้อยสำหรับฉัน
— ผู้ใช้ Foo Bar

24
สำหรับผู้ที่เชื่อมั่นในการใช้บรรทัดคำสั่งคลิกที่ Build-> Clean Project และที่จะดำเนินการ 'gradlew clean' ;)
— นาย Concolato

22
ไม่มีโชค ... การสร้างการทำความสะอาดไม่ทำงานกับฉัน
— CandleCoder

7
ถ้า clean, rebuild, invalidate caches-restart ไม่สามารถแก้ปัญหาได้สำหรับ: import package.R;
— Sudip Bhandari

2
สำหรับฉันนี่เป็นสาเหตุของปัญหา: ไม่ตรงกันระหว่าง ApplicationId ใน gradle และชื่อแพคเกจในรายการ (และแม้ว่าการนำเข้าอัตโนมัติเพิ่มที่อยู่ผิดสำหรับไฟล์ R) ฉันขอแนะนำบทความเล็ก ๆ นี้เพื่อชี้แจงความแตกต่างระหว่างสอง blog.stylingandroid.com/package-name-vs-application-id
— Tina

227

ใน Android Studio เวอร์ชันล่าสุดอย่างน้อยสำหรับฉันการทำงานต่อไปนี้:

"เครื่องมือ" -> "Android" -> "ซิงค์โครงการกับไฟล์ Gradle"

ใน Android Studio 3.1.3 ล่าสุด (กรกฎาคม 2018) "Sync Project with Gradle Files" มีอยู่ในแถบเมนูหลัก

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


Android Studio รุ่นใดที่คุณใช้ในเวลานั้น
— Joel Handwell

ไม่ได้ผลสำหรับฉัน (Android Studio 0.8.14) แต่ Build> Clean project ทำงานได้ดี
— Phat H. VU

ยังคงใช้งานได้ใน Android 1.2.1 อย่าลืมทำสิ่งนี้มากกว่าหนึ่งครั้งถ้ามันไม่ทำงานในครั้งแรก
— noob

นี่เป็นสิ่งเดียวที่ทำงานให้ฉัน ฉันลองวิธีแก้ปัญหาอื่นทั้งหมดก่อน
— Mac

1
ใน Android Studio 3.1.1 ตัวเลือกนี้อยู่ในไฟล์ -> ซิงค์โครงการที่มีไฟล์ Gradle
— Hrishikesh Kadam

155

ฉันใช้ gradle 3.3.0 มันเป็นผู้ร้ายหลัก เสียชีวิตไปแล้ว 6.50 ชั่วโมง Gradle 3.2.1 ลบข้อผิดพลาด

classpath 'com.android.tools.build:gradle:3.2.1'

ปัญหาได้รับการแก้ไขหลังจากเปลี่ยนรุ่น gradle ประวัติรายละเอียดสามารถพบได้ที่นี่


9
อีกหนึ่งความสำเร็จที่น่าทึ่งโดยนักพัฒนาสตูดิโอ Android การย้อนกลับไปใช้3.2.1จริง ๆ แล้วเป็นทางออกเดียวที่ได้ผลกับฉัน ...
— Vucko

1
ยังคงมีปัญหาอย่างน่าแปลกใจ 2 เดือนต่อมา รุ่นล่าสุด (3.3.2) ไม่สามารถแก้ไขได้ 3.2.1 ได้แก้ไขแล้ว
— JakeSteam

แทนที่จะย้ายกลับไปไล่ระดับสี3.2.1คุณสามารถอัปเกรด Android Studio เป็นเวอร์ชัน3.3ได้ ดูคำตอบของฉันที่นี่
— arne.z

มันทำงานโดยการเปลี่ยน 3.3.0 เป็น 3.2.1 แต่คำถามของฉันมันทำงานได้ดีใน 3.3.0 ฉันเพิ่งได้ refactor และไฟล์ manifest xml และไฟล์ gradle ที่อัปเดตแล้วและซิงค์ gradle แล้ว ฉันขอทราบได้ไหมว่าสาเหตุอะไร
— บ้าง

อินเทอร์เน็ต 25 ชั่วโมงและดูเหมือนว่านี่เป็นวิธีการแก้ปัญหาเดียวที่ทำงานได้ ขอบคุณ android studio: (....
— Nahabwe Edwin

108

ฉันมีปัญหาที่คล้ายกันและนี่คือสิ่งที่ฉันทำ:

ล้างโครงการและซิงค์โครงการด้วย Gradle

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

ตรวจสอบรุ่น buildTools ใน sdk ของฉัน ป้อนคำอธิบายรูปภาพที่นี่

จาก build gradle (โมดูล) เปลี่ยน minSdkVersion จาก 8 เป็น 9

defaultConfig {
        applicationId "PackageName"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

แต่ทั้งหมดนี้ไม่ได้ช่วย

ในที่สุดฉันก็พบคำตอบ (สิ่งนี้ใช้ได้ในกรณีของฉัน)

เปลี่ยนจาก build.gradle (module: app)

android {
    compileSdkVersion 21
    buildToolsVersion '21.0.1'
......
....
}

หรือ

เลือกไฟล์ | การเปลี่ยนแปลงโครงสร้างโครงการสร้างเครื่องมือเวอร์ชันเป็น 21.1.1

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


นี้ก็ทำงานให้ฉันเปลี่ยนสร้างและการตั้งค่า gradle (โมดูล) ไฟล์
— Samuele Bolognini

ขอบคุณเช่นกันนี่เป็นวิธีแก้ปัญหา
— แอพ Dev Guy

58
  1. ตรวจสอบไฟล์ xml ของคุณ
  2. ทำความสะอาดโครงการ

นี่ไง.

ตัวอย่างเช่นฉันมีรายการในstrings.xml:

<string name="A">Some text</string>

และในactivity_main.xmlฉันใช้รายการสตริงนี้

<TextView
android:id="@+id/textViewA"
android:text="@string/A"/>

แม้ว่าฉันจะทำงานกับโครงการฉันก็ลบมัน

 <string name="A">Some text</string>

และดังนั้นจึงactivity_main.xmlไม่ถูกต้อง ผลลัพธ์: ไม่สามารถแก้ไข R

ดังนั้นตรวจสอบ*.xmlไฟล์ของคุณและทำความสะอาดโครงการ


สิ่งนี้ช่วยชีวิตฉันได้ [PLUS ONE]
— GingerHead

รูปภาพหายไปหนึ่งใน XML ของฉันที่อ้างถึงทำให้เกิดปัญหานี้ให้ฉัน ใส่ภาพในโฟลเดอร์ทำความสะอาดและตอนนี้ R ก็มีความสุขอีกครั้ง
— Casey Murray

ฉันตั้งใจกำหนดสตริงของฉันสองครั้งใน strings.xml สตูดิโอไม่ได้แสดงสิ่งนั้นเลย X- (ขอบคุณสำหรับคำตอบของคุณ
— codingjeremy

นี่คือสำหรับนักพัฒนาคนอื่นอ่าน วิธีนี้เพียงอย่างเดียวควรแก้ปัญหาเช่นเดียวกับฉัน
— Paramvir Singh Karwal

6
เหตุใดจึงไม่มีข้อเสนอแนะในการขีดเส้นใต้ไฟล์ XML ที่ไม่ดีใน IDE
— Fuhrmanator

53

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

ดังนั้นคุณลองทำความสะอาด แต่ไม่ได้ผล

และการรีสตาร์ทก็ไม่ทำงานเช่นกัน

แต่ลองใช้ไฟล์ -> ทำให้แคช / รีสตาร์ทไม่ถูกต้อง ... -> ทำให้ใช้งานไม่ได้และเริ่มต้นใหม่

Android Studio เก็บข้อมูลเกี่ยวกับไฟล์ที่ต้องใช้ไฟล์อื่น และเนื่องจากการย้ายไฟล์ไปรอบ ๆ ไม่ได้ดำเนินการอย่างถูกต้องการย้ายไฟล์ทำให้เกิดข้อผิดพลาด และนั่นไม่ใช่ทั้งหมด: แคชของการขึ้นต่อกันเหล่านี้ถูกใช้ในความพยายามเร่งการสร้าง

ซึ่งหมายความว่าคุณไม่เพียง แต่ต้องรีสตาร์ท แต่คุณต้องทำให้แคชเหล่านั้นใช้ไม่ได้เพื่อกู้คืนสติ (หรือสร้างใหม่อย่างถูกต้อง)


ไม่ได้ช่วยอะไร พยายามทำความสะอาด / สร้างใหม่ด้วย เกิดข้อผิดพลาดหลังจากที่ฉันย้ายจาวาแพ็คเกจไปยังแพ็คเกจอื่น น่าสนใจในคลาส R แพ็กเกจหนึ่งสามารถเข้าถึงได้ แต่ไม่สามารถเข้าถึงได้ในแพ็คเกจที่ฉันย้าย
— rint

ใน Android Studio เวอร์ชันที่ใหม่กว่ายกเลิกการใช้งานและรีสตาร์ทเป็นตัวเลือกเมนูเริ่มต้น สิ่งนี้จะช่วยอย่างน้อยคน (เกินไปไม่ดีพวกเขาไม่ได้แก้ไขข้อบกพร่องบ้าที่ก่อให้เกิดข้อผิดพลาดในสถานที่แรก!)
— สกอตต์บิ๊กส์

1
ฉันได้รับข้อผิดพลาดนี้หลังจากย้ายและเปลี่ยนชื่อโครงการ วิธีนี้แก้ไขปัญหา R หลังจากการทำความสะอาดและการรีสตาร์ททั้งหมดไม่ได้ ขอบคุณ.
— FrankKrumnow

2
วิธีนี้ใช้เวลาประมาณเดียวกับการดื่มกาแฟสักถ้วย - ซึ่งสามารถใช้ในการอาบน้ำกาแฟที่ดีถ้ามันยังคงเครื่องหมาย R เป็นสีแดง ... ヽ (´ー`) ノ
— ZooMagic

1
พบ gif สำหรับความคิดเห็นก่อนหน้าของฉัน -> tenor.com/view/…
— ZooMagic

30

ฉันคิดว่าถ้าคุณวางไฟล์กิจกรรมของคุณไปยังโฟลเดอร์อื่นมากกว่าไฟล์เริ่มต้น คุณจำเป็นต้องนำเข้าcom.example.yourproject.R(นี้เป็นโครงการของคุณRไฟล์ไม่ได้Android.Rไฟล์) Rให้กับกิจกรรมทั้งหมดที่ใช้ ตัวอย่างเช่นในMainActivityไฟล์แทรกบรรทัดนี้:

import com.example.yourproject.R;

1
อ่าและยังคงมีข้อความแสดงข้อผิดพลาดก่อนที่คุณจะสร้างครั้งแรก อย่างไรก็ตามคุณเพียงแค่กดบิลด์ Android Studio จะสร้างไฟล์ R และบิลด์ควรจะสำเร็จ
— ninjahoahong

และฉันคิดว่าจะดีกว่าหลังจากการแก้ไขคุณควรล้างโครงการของคุณแล้วสร้าง หรือกด Shift + F9 เพื่อตรวจแก้จุดบกพร่องด้วยอุปกรณ์หรือตัวจำลอง ฉันชอบที่จะแก้ปัญหาบนอุปกรณ์จริง
— ninjahoahong

นี่คือทางออกที่ดีที่สุด ขอขอบคุณเพื่อน
— Arundev

คำตอบนี้เป็นไม้กายสิทธิ์ ขอบคุณ
— leeCoder

28

ดูเหมือนจะมีสาเหตุหลายประการสำหรับปัญหานี้ เมื่อเร็ว ๆ นี้ฉันได้เพิ่มกิจกรรมเพื่อทดสอบที่เรียกว่า NewActivity สิ่งนี้สร้างไฟล์ชื่อres/menu/new.xmlและ gradle ไม่ชอบชื่อนั้นเพราะคำใหม่เป็นคำสงวน

gradlew clean

หรือ

"Tools" -> "Android" -> "Sync Project with Gradle Files"

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


ขอบคุณที่ทำงานให้ฉันด้วย คำถามเล็ก ๆ - ฉันควรพิมพ์ gradlew ที่ใดถ้าฉันต้องการทำเช่นนี้ (ฉันทำ "เครื่องมือ" -> "Android" -> "ซิงค์โครงการด้วยไฟล์ Gradle")?
— Sergii

เปิดเทอร์มินัลคำสั่งสลับไปที่ไดเรกทอรีโครงการและดำเนินการ "./gradlew clean"
— chawkinsuf

นั่นคือสิ่งที่ฉันมี ขอบคุณ!
— TinyGrasshopper

วิธีนี้แก้ปัญหาได้ดีกว่า 'สร้างใหม่โครงการ'
— IgorGanapolsky

ใช่ในกรณีของฉันฉันเพิ่มไฟล์ png เรียกว่า "import.png" ฉันต้องเปลี่ยนชื่อในกรณีของฉัน "import_icon.png" จากนั้นโครงการก็คอมไพล์แล้ว
— mihai71

17

ไฟล์ R.java มีลิงก์ระหว่างหน้า xml และ java "R ไม่สามารถแก้ไขได้" เกิดขึ้นเฉพาะเมื่อมีปัญหากับไฟล์ทรัพยากรบางไฟล์ของคุณ ดังนั้นวิธีที่ดีที่สุดและมีประสิทธิภาพคือการลบ xml ที่ทำล่าสุดหรือ drawable ในไฟล์ res จากนั้นอีกครั้งเริ่มต้นจากที่นั่นตามบรรทัดฐานการเข้ารหัส Android นี่เป็นวิธีเดียวเท่านั้น วิธีที่มีประสิทธิภาพและถูกต้อง

ใช้ Git เพื่อติดตามรหัสอย่างเหมาะสม ..


ในกรณีของฉันมีไม่เพียง แต่ปัญหาใน XML แต่ยังอยู่ใน PNG (ใน drawable)
— CoolMind

15

รหัสของคุณถูกสัญญาณรบกวน คำตอบนั้นค่อนข้างง่าย

เพียงแค่ไปที่Build -> โครงการทำความสะอาด

นั่นควรทำเคล็ดลับ

ตรวจสอบเวอร์ชั่น Android Studio ของคุณด้วย

ฉันกำลังใช้Android 3.0.1


14

คุณเพิ่งปรับปรุงเครื่องมือ SDK ของคุณเมื่อเร็ว ๆ นี้? เรียกใช้ตัวจัดการ SDK Android และตรวจสอบให้แน่ใจว่าคุณมีเครื่องมือ SDK ล่าสุดซึ่งตอนนี้แยกจากเครื่องมือแพลตฟอร์ม ฉันมีปัญหาเดียวกันนี้เมื่อฉันอัปเดตตัวจัดการ SDK ครั้งแรกแพคเกจเครื่องมือสร้าง SDK ไม่ปรากฏขึ้นสำหรับการติดตั้ง / อัปเดตจนกว่าฉันจะปิดและเปิดตัวจัดการ SDK อีกครั้ง


ฉันเชื่อว่าทุกอย่างทันสมัย ที่อาจทำให้เกิดปัญหาเช่นนี้หรือไม่
— ez4nick

หากคุณไม่มีเครื่องมือสร้าง SDK ใหม่ติดตั้งอยู่
— invertigo

12

เพียงล้างโครงการของคุณและซิงค์โครงการด้วยไฟล์ Gradleป้อนคำอธิบายรูปภาพที่นี่

และปัญหาจะได้รับการแก้ไข


ควรสังเกตว่าการคลิกขวาที่ "แอพ" และการคลิกปุ่มซิงโครไนซ์ในเมนูนั้นไม่สามารถทำได้ ขอบคุณ
— Mafro34

11

ฉันมีสิ่งนี้ด้วย

  1. ตัวอักษรตัวพิมพ์ใหญ่ในทรัพยากรที่สามารถถอดได้ของฉัน
  2. นำเข้า Android.R ที่ถูกเพิ่มโดย Android Studio (หรือ Eclipse)
  3. ข้อผิดพลาดในไฟล์ xml

ฉันมีปัญหาเพราะมีข้อผิดพลาดในไฟล์ XML ของฉัน แก้ไขปัญหาแล้วBuild->Clean Project
— AjayCodes

11

ฉันเพิ่งมีปัญหานี้และการทำความสะอาด / สร้าง ฯลฯ ไม่สามารถแก้ไขได้ ฉันเดาว่าฉันมีปัญหาบางอย่าง แต่ไม่แน่ใจว่าจะหาได้ที่ไหน (อยู่ในไฟล์ Manifest ไฟล์ xml ของทรัพยากรหรือไม่)

เมื่อมีสิ่งผิดปกติคุณสามารถค้นหาว่ามันคืออะไรโดยทำการวิเคราะห์โค้ด

จากเมนูด้านบนเลือก:

วิเคราะห์ -> ตรวจสอบรหัสสแกนโครงการทั้งหมดโดยใช้โปรไฟล์ 'ค่าเริ่มต้น'

ผลการตรวจสอบของคุณจะมีองค์ประกอบที่เรียกว่า 'Android' ที่นี่คุณจะได้รับรายการสิ่งที่ทำให้เกิดปัญหาในทรัพยากรและไฟล์รายการของคุณ ข้อผิดพลาดจะเปิดไฟล์ xml ที่สร้างขึ้นจากบิลด์ของคุณซึ่งจะแสดงข้อผิดพลาดเป็นสีแดง

ปัญหาที่แน่นอนของฉันเกิดขึ้นเนื่องจากฉันใช้ไฟล์รายการกลิ่นและฉันคัดลอกสิทธิ์บางอย่างภายใน<application>แท็กในรสชาติโดยบังเอิญ

การตรวจสอบ

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


ที่น่าสนใจฉันมีปัญหานี้ในไฟล์เดียวและเรียกใช้กระบวนการ "รหัสตรวจสอบ" และมันล้างตัวเอง (ทำความสะอาดและสร้างใหม่ไม่ได้แก้ไข) ต้องมีอะไรบางอย่างติดอยู่ในผ้าสำลีซึ่งสิ่งนี้เท่านั้นที่จะล้างออก ขอบคุณ!
— rundavidrun

ขอบคุณสำหรับสิ่งนี้! ขณะนี้พบข้อผิดพลาดทั่วไปหลายอย่างซึ่งคาดว่าชิ้นส่วนที่นำลงมาทั้งปราสาทเป็นข้อผิดพลาดทางไวยากรณ์เล็กน้อยในไฟล์ XML ที่สร้างโดย Asset Studio! เมื่อฉันแก้ไขสิ่งนี้แล้วโครงการสะอาดช่วยให้ฉันเดินหน้าต่อไป
— Bink

10

ฉันต้องนำเข้าRแพ็คเกจของฉันใน android studio ตัวอย่างเช่น:import com.example.<package name>.R


1
ฉันเคยมาที่นี่ก่อนที่ฉันจะคิด ขอขอบคุณอีกครั้ง
— Ohiovr

1
สิ่งนี้ใช้ได้สำหรับฉัน ขอบคุณมาก.
— Aquarius_Girl

สิ่งนี้เกิดขึ้นกับฉันหลังจากที่ฉันสร้างชื่อแพ็กเกจใหม่แต่ทว่าสตูดิโอ Android ออกไปimport com.example.old-package-name.Rดังนั้นฉันจึงต้องเปลี่ยนชื่อการนำเข้า
— auspicious99

9

นี่เป็นคำถามที่เก่ามาก แต่ก็ยังเกิดขึ้นมากและไม่มีคำตอบที่ครอบคลุมอย่างแท้จริงที่นี่

ฉันมีปัญหานี้หลายครั้งกว่าที่ฉันต้องการที่จะยอมรับ อาจเกิดจากปัญหาที่หลากหลายที่ส่วนใหญ่เกี่ยวข้องกับโครงสร้างโครงการของคุณไม่ตรงกับสิ่งที่คาดหวัง นี่คือรายการปัญหาทั้งหมดที่ฉันมี:

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

AppName/        // AppName is your app's name, obviously
    .gradle/    // This is a compiler created directory. You should normally leave it alone
    .idea/      // Ditto
    build/      // This too
    gradle/     // And this
    app/
        build/
        libs/
        src/
            androidTest/   // Tests based on the Android instrumentation runner should go here
            main/
                java/
                    fully/           // Typically com
                        qualified/   // the domain name. Longer package 
                                     // names may have deeper folder trees
                            AppName/ // All your java files go here
                res/
                    drawable-*/      // One of these for each resolution you support
                    layout/          // All of your general layouts
                    menu/            // All of your menu layouts
                    values/          // All of your resource xml files
                    xml/             // PreferenceScreen layouts go here
                AndroidManifest.xml
            debug/         
            test/          // Pure jUnit tests should go here
        .gitignore
        app.iml
        build.gradle   // This is the gradle file you should be making most changes to
        proguard-rules.pro
    .gitignore
    build.gradle       // This gradle file should mostly be left alone
    gradle.properties
    gradlew
    local.properties
    AppName.iml
    settings.gradle

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

โดยเฉพาะอย่างยิ่งถ้าคุณเปลี่ยนชื่อแอปของคุณคุณต้องตรวจสอบให้แน่ใจว่าซอร์สต้นไม้ main / java / com / domain / AppName ได้รับการอัพเดต ตรวจสอบให้แน่ใจด้วยว่าแท็กแพ็คเกจใน AndroidManifest.xml ของคุณนั้นถูกต้อง

หากมีข้อผิดพลาดในไฟล์ Gradle หรือ AndroidManifest.xml ของคุณสิ่งนี้จะป้องกันไม่ให้ Android Studio สร้างไฟล์ทรัพยากรของคุณอย่างถูกต้อง ไฟล์ Gradle สามารถแตกได้โดยการอัพเกรด Android Studio บางครั้งโดยเฉพาะอย่างยิ่งจากรุ่นก่อน 1.0 บางครั้งนี่เป็นเพราะมันไม่สนับสนุนปลั๊กอิน Gradle เวอร์ชันเก่าดังนั้นคุณต้องอัปเดตหมายเลขเวอร์ชันของคุณ บางครั้งอาจเป็นเรื่องยากที่จะค้นหาว่ารุ่นปัจจุบันคืออะไร ณ วันนี้ 7/17/15 com.android.tools.build:gradle:1.2.3ปพลิเคชันของฉันจะรวบรวมดีกับ สิ่งนี้อยู่ในบล็อกการพึ่งพาในไฟล์ gradle นอกสุด

หาก AndroidManifest ของคุณอ้างอิงถึงทรัพยากรหรือกิจกรรม drawable หรือสตริงที่ไม่มีอยู่จริงมันจะแตกและทำให้เกิดข้อผิดพลาดนี้ บางครั้งหากมีสิ่งใดอ้างอิงทรัพยากรหรือสตริงที่ไม่มีอยู่คุณจะได้รับข้อผิดพลาดนี้

หากคุณมีไฟล์ในทรัพยากรของคุณที่เสียหายหรือไฟล์ xml ไม่ถูกต้องคุณจะได้รับข้อผิดพลาดนี้

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

หากคุณมีทรัพยากร xml สองรายการที่มีชื่อเดียวกันในไดเรกทอรีที่ไม่ได้แทนที่ซึ่งกันและกันคุณสามารถมีปัญหานี้ได้ ตัวอย่างเช่นคุณสามารถมีชื่อเดียวกันใน drawable-mhdpi และ drawable-xhdpi เพราะพวกเขาแทนที่กันขึ้นอยู่กับอุปกรณ์เป้าหมาย แต่ถ้าคุณมีชื่อเดียวกันในรูปแบบและในเมนูมันจะทำให้เกิดปัญหา เปลี่ยนชื่อหรือลบไฟล์ใดไฟล์หนึ่ง

หากมีเพียงบางแหล่งที่มีปัญหานี้ทรัพยากรเหล่านั้นส่วนใหญ่จะอยู่ในไดเรกทอรีที่ไม่ถูกต้อง

ในกรณีหนึ่งฉันต้องติดตั้ง Android Studio ใหม่ทั้งหมด ฉันไม่รู้ว่าอะไรผิดปกติ แต่มันใช้ได้ผล

ในกรณีหนึ่งฉันย้ายโครงการทั้งหมดไปยังไดเรกทอรีอื่นและนำเข้าใหม่เป็นโครงการใหม่ ฉันไม่รู้ว่าอะไรผิดปกติ แต่มันใช้ได้ผล

ไฟล์ Xml พร้อมคำที่สงวนไว้สำหรับชื่ออาจทำให้เกิดปัญหานี้ เปลี่ยนชื่อหรือลบ

มีบางวิธีที่ไฟล์ Gradle ของคุณสามารถจบการอ้างอิงถึงเวอร์ชันของเครื่องมือสร้างที่คุณไม่ได้ติดตั้ง แก้ไขสิ่งนี้โดยเปลี่ยน Gradle หรือดาวน์โหลดเครื่องมือสร้างที่เหมาะสม

ในที่สุดหลังจากที่คุณแก้ไขสิ่งที่ผิดคุณต้องทำความสะอาดโครงการ Gradle ของคุณ คุณทำได้โดยไปที่เมนู Build ที่ด้านบนและเลือก Clean Project


9

เพียงไปที่รายการเมนูบน Android คลิกที่เมนูสร้างในภายใต้สร้างคลิกที่สร้างโครงการ

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


9

ฉันประสบปัญหานี้เมื่อฉันเปลี่ยนชื่อโฟลเดอร์โดเมนของแอพด้วยตนเอง เพื่อแก้ไขปัญหานี้ฉันต้อง

  1. การตั้งค่าที่เหมาะสมpackageโครงสร้างโฟลเดอร์ของใน<manifest>AndroidManifest.xml
  2. การตั้งค่าที่ตั้งแพคเกจใหม่สำหรับandroid:nameของใน<activity>AndroidManifest.xml
  3. ล้างแคชโดย

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

ปัญหาจะหายไปเมื่อสตูดิโอ Android รีสตาร์ทและสร้างดัชนีใหม่


9

ฉันมีปัญหาเดียวกัน: Android Studio 3.2 โครงการคอมไพล์และทำงานได้ดี แต่ฉันได้รับ "ไม่สามารถแก้ไขสัญลักษณ์" R "คำเตือนบนหน้าจอ

ไม่ได้ความช่วยเหลือ:

  • สร้าง -> โครงการที่สะอาด
  • สร้าง -> สร้างโครงการใหม่
  • ไฟล์ -> ทำให้แคช / รีสตาร์ทไม่ถูกต้อง

ช่วย:

ทั้ง

ใน build.gradle

dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
...
}

แทนที่ด้วย

   dependencies {
            classpath 'com.android.tools.build:gradle:3.2.1'
    ...
    }

หรือ

อัปเดต Android Studio เป็น3.3


คุณช่วยชีวิตฉัน ! การอัปเดต android studio เป็น 3.4 แก้ปัญหาให้ฉัน
— Artory

8

ฉันมีกรณีพิเศษสำหรับปัญหานี้

ในโครงการของฉันทุกสิ่งเป็นไปด้วยดีมันสามารถคอมไพล์และสร้างได้สำเร็จ แต่ใน Android Studio IDE ของฉัน (และฉันก็ลอง Intelligent IDEA พวกมันอยู่ในสถานการณ์เดียวกัน) ไฟล์ R.java ไม่สามารถแก้ไขได้ดีและเป็นไปได้เสมอ วางสายสีแดง

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

สิ่งนี้ทำให้ฉันเกือบคลั่งฉันไม่สามารถทนสีอ่านเมื่อฉันกำลังตั้งโปรแกรม

ในที่สุดฉันก็พบว่าปัญหายุ่งยากนี้เกิดจากขนาดไฟล์ของ R.java โครงการของฉันใหญ่มากรองรับหลายภาษาและหลายขนาดหน้าจอ มีทรัพยากรจำนวนมากเพื่อให้ขนาดไฟล์ของฉัน R.java เป็นเรื่องเกี่ยวกับมี 2.5M

ขนาดสูงสุดของไฟล์ใน Android Studio คือ 2.5M ในการตั้งค่าเริ่มต้นดังนั้นไฟล์ที่ใหญ่กว่าขีด จำกัด นี้จะไม่สามารถแก้ไขได้อย่างดี และคุณสามารถเปลี่ยนการตั้งค่าเริ่มต้นใน "AndroidStudio-root / bin / idea.properties"

เปลี่ยนบรรทัดนี้:

idea.max.intellisense.filesize=2500

ถึง :

idea.max.intellisense.filesize=5000

จากนั้นรีสตาร์ท Android studio สีแดงถูกไล่ออกฉันสามารถโปรแกรมได้อย่างมีความสุขอีกครั้ง


ใน Android 3.2 เพียงแค่ช่วย / แก้ไขคุณสมบัติที่กำหนดเอง
— Beto

เคล็ดลับดี แต่มันไม่ได้แก้ปัญหาของฉันไม่สามารถแก้ไขสัญลักษณ์ R
— Aliton Oliveira

7

สร้าง> ทำความสะอาดโครงการ

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

ขอให้โชคดีและโชคดีกับโครงการของคุณ


ขอบคุณ มันก็ใช้ได้ผลเช่นกันสำหรับฉัน ฉันแทนที่รูปภาพบางภาพด้วย drawable และได้รับข้อผิดพลาดนั้น
— KCP

7

ทำ: สร้าง> ล้างโครงการ

สำคัญ: ตรวจสอบให้แน่ใจว่าคุณไม่มีข้อผิดพลาดใด ๆ หลังจากล้างข้อมูลโครงการในบานหน้าต่างข้อความ (Alt + 0) หากคุณพบวงกลมสีแดงที่มีเครื่องหมายอัศเจรีย์คุณต้องลบข้อผิดพลาดเหล่านั้นในรหัสของคุณ

ข้อผิดพลาดส่วนใหญ่เกี่ยวข้องกับ @ string / หรือ @ array / ทำความสะอาดโครงการอีกครั้งและทำ!


7

ฉันมีปัญหาเดียวกันและมันเกิดขึ้นเมื่อฉันสร้างโครงการใหม่

สิ่งที่ฉันทำคือ:

  • ตรวจสอบการอัปเดต SDK
  • จากนั้นอัปเดต android studio
  • จากนั้นเปิดโครงการอีกครั้ง
  • เปิด andoridmanifest.xml
  • ลบช่องว่างระหว่าง "_>" ใน android: ฉลากและบันทึก

ที่เหมาะกับฉัน


7

ฉันมีเวลายากในการแก้ไขปัญหานี้เอง

  • ตรวจสอบให้แน่ใจว่าคุณไม่มีข้อผิดพลาดในไฟล์ layout.xml ของคุณ
  • ไปที่Build> Clean project

มันใช้งานได้สำหรับฉันหวังว่าจะได้ผลกับคุณเช่นกัน


6

ฉันมีปัญหาเดียวกันและเวลาส่วนใหญ่ได้รับการแก้ไขโดย

  • ซิงค์โครงการกับไฟล์ gradle
  • การสร้าง -> โครงการที่สะอาด
  • การทำไฟล์ -> ทำให้แคชใช้ไม่ได้

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

ปัญหาก็คือในไฟล์ xmlที่ฉันได้ให้ค่าสตริงธรรมดาสำหรับandroid:idแทนชนิดของทรัพยากร ID

ผิดพลาด

android:id="username"

การแก้ไข

android:id="@id/username"

การแยกแยะสิ่งต่าง ๆ ที่เกี่ยวข้องกับresourcesในไฟล์ xml เป็นเหตุผลหลักสำหรับข้อผิดพลาดนี้ระวังว่ามันอาจไม่แสดงเป็นข้อผิดพลาดในไฟล์เลย์เอาต์ xml

บันทึก

ในกรณีส่วนใหญ่คอมไพเลอร์จะแสดงที่มาของข้อผิดพลาดในข้อความ ลองตรวจสอบก่อนที่จะลองวิธีแก้ไขปัญหาอื่น ๆ


6

`ฉันมีปัญหาเดียวกันและแก้ไขได้โดย:

1) Sync Project with gradle files
2) Build -> Clean Project
3) Build -> Rebuild Project
4) File -> Invalidate caches

//imp step
5) Check your xml files properly.`

นี่เป็นคำตอบที่ดีแม้ว่าฉันเพียงต้องการวาง '//' ในไฟล์ gradle และเลือก resync จากนั้นทุกคนรู้จักการนำเข้าและอนุญาตให้ฉันเรียกใช้แอป
— Val

5

สัญกรณ์นี้ดูเหมือนว่าจะทำงานได้ดี

android:id="@+id/viewID"

แผงการออกแบบของ Android Studio ทำงานได้ไม่ดีนัก


5

ปัญหาเดียวกัน. เริ่มต้นเมื่อฉันเพิ่มรูปภาพสองสามภาพในโฟลเดอร์ drawable ของฉันและพยายามเข้าถึง ภาพที่เพิ่มเข้ามาก็มีส่วนขยายด้วยตัวพิมพ์ใหญ่ ดูเหมือนว่าจะมีการสร้างล้มเหลวเนื่องจากแม้ว่าฉันจะเปลี่ยนชื่อพวกเขาข้อความก็เหมือนกันและ R ไม่สามารถเข้าถึงได้ สิ่งที่ฉันทำคือในไฟล์. iml ฉันมองหา excluseFolder และลบออก (เช่นร้อง):

  <excludeFolder url="file://$MODULE_DIR$/build/apk" />
  <excludeFolder url="file://$MODULE_DIR$/build/assets" />
  <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
  <excludeFolder url="file://$MODULE_DIR$/build/classes" />
  <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
  <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
  <excludeFolder url="file://$MODULE_DIR$/build/libs" />
  <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
  <excludeFolder url="file://$MODULE_DIR$/build/res" />
  <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
  <excludeFolder url="file://$MODULE_DIR$/build/tmp" />

หลังจากนั้นฉันสร้างโครงการขึ้นใหม่และ R ปรากฏตัวอีกครั้งอย่างน่าอัศจรรย์


5

มีหลายสาเหตุสำหรับข้อผิดพลาดนี้

  1. บางครั้งมันเกิดขึ้นสำหรับการแทนที่ไฟล์ภาพโดยใช้ชื่อเดียวกัน
  2. สมมติว่าคุณลบรายการจากเลย์เอาต์. xml พูด<Button/>แต่ยังคงมีการประกาศในกิจกรรมหรือแฟรกเมนต์. java
  3. อื่น ๆ อีกมากมาย.

วิธีที่ดีที่สุดในการติดตามข้อผิดพลาดคือสร้างใหม่ค่อนข้างสะอาดหรือซิงค์ทำข้อผิดพลาดโดยเจตนาบางอย่าง

หากไม่สามารถแก้ปัญหาของคุณได้จะต้องมีข้อผิดพลาดหรือข้อผิดพลาดรันไทม์หรือข้อผิดพลาดเกิดขึ้นเนื่องจากการใช้ทรัพยากรที่ไม่เหมาะสมอาจเป็นทั้งไฟล์ java หรือ xml ในรหัสหรือการออกแบบของคุณซึ่งบังคับให้ gradle หยุดเนื่องจาก (R ) ไฟล์ esource ไม่สามารถสร้างดัชนีทรัพยากรของคุณได้อย่างถูกต้องและคุณต้องยอมรับว่า

หากโครงการของคุณทำงานก่อนที่คุณจะทำการเปลี่ยนแปลงให้คอมเม้นต์การเปลี่ยนแปลงที่คุณทำและลองสร้างโครงการใหม่

มันจะทำงานได้อย่างแน่นอนเนื่องจากจะไม่มีการเปลี่ยนแปลง

เพื่อติดตามข้อผิดพลาดที่แน่นอนตรวจสอบการเปลี่ยนแปลงโดยแบ่งการเปลี่ยนแปลงลงในโมดูลขนาดเล็ก

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


4

นี่มันปวดหัวมากสำหรับฉัน ในกรณีของฉันข้อผิดพลาดปรากฏขึ้นหลังจากกำหนดค่า "Google Play Services" ใน Android Studio (ติดตั้ง + build.gradle config) สิ่งนี้จำเป็นต้องใช้ minsdk> 7 แต่ข้อผิดพลาดนั้นไม่ชัดเจนมาก (จริง ๆ แล้วการร้องเรียนเกี่ยวกับสิ่งนี้จะปรากฏเป็น "ข้อมูล" เท่านั้น) อย่างไรก็ตามเมื่อเปลี่ยน minsdk เป็น 8 ทั้งในไฟล์ manifest และไฟล์ build.gradle และการสร้างโครงการขึ้นใหม่ข้อผิดพลาดก็หายไป

ดังนั้น .. คำแนะนำทั่วไปเกี่ยวกับเรื่องนี้ถ้าฉันอาจพูดคุยทั่วไป - คุณอาจมีปัญหาบางอย่างในไฟล์รายการของคุณหรือไฟล์การกำหนดค่าอื่น ๆ นั่นคือการป้องกันการสร้างที่เหมาะสม ลองดูรายงานข้อผิดพลาดอย่างหนักแม้กระทั่งข้อความที่ชื่อว่า "ข้อมูล" สำหรับคำใบ้เกี่ยวกับสิ่งที่อาจเป็น ...

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