“ ไม่สามารถแก้ไขสัญลักษณ์ 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.