Android Studio ทำเครื่องหมาย R ด้วยสีแดงพร้อมข้อความแสดงข้อผิดพลาด“ ไม่สามารถแก้ไขสัญลักษณ์ R” ได้ แต่การสร้างสำเร็จ


150

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

ฉันใช้ Android Studio 1.7.0 และสร้างโครงการด้วยการตั้งค่าเริ่มต้น แนบภาพหน้าจอ:

ภาพหน้าจอของ Android Studio

นี่คือของฉันbuild.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

นี่คือลักษณะโครงสร้างของโครงการ:

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

ความคิดวิธีการแก้ไขปัญหานี้?


สิ่งนี้เกิดขึ้นกับบางโครงการของฉัน ในการแก้ไขปัญหานี้ฉัน 'สะอาด', 'สร้างใหม่', ปิดโครงการและเปิดใหม่ จากนั้นเลือกเครื่องมือ -> Android -> ซิงค์โครงการด้วยไฟล์ Gradle ลองทำสิ่งต่อไปนี้เช่นกัน ... ปิดโปรเจ็กต์และย้ายโฟลเดอร์ไปยังไดเรกทอรีใหม่หรือเปลี่ยนชื่อไดเรกทอรีปัจจุบัน ตอนนี้นำเข้าโครงการราวกับว่ามันเป็นของใหม่ มีสองวิธีในการทำเช่นนี้จากหน้าจอ Android เริ่มต้นเลือกการนำเข้าและเมื่อคุณค้นหาไดเรกทอรีไม่ต้องนำเข้าจากชื่อโครงการหรือไดเรกทอรีหลักนำเข้าระดับหนึ่งในที่ 'แอป'
— Snappy Cracker

ผู้อ่านก่อนที่คุณจะลองทำสิ่งอื่นซึ่งอาจซับซ้อน ... เพียงลองรีสตาร์ท android studio
— eRaisedToX

คำตอบ:


111

เพียงคลิกที่สร้าง -> สร้างตัวเลือกโครงการใน Android Studio ของคุณ


ฉันมีรูป. JPG ที่ฉันเปลี่ยนเป็น. png โดยไม่มีการแปลงที่เหมาะสม การลบไฟล์นั้นช่วยแก้ปัญหา แปลกแม้ว่า ..
— DeathRs

ฉันอยากทำสิ่งนี้จริงๆ แต่ Android Studio มีชื่อเสียงในด้านการสร้าง ฉันจะใช้เวลามากกว่า 30 นาทีถ้าฉันทำอย่างนี้
— Neon Warge

โซลูชั่นที่สมบูรณ์แบบ !!
— Akash Bisariya

ต้องทำสองครั้ง
— Janac Meena

บางครั้งอาจเป็นเพราะไฟล์ XML ของคุณผิดพลาด <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">ตรวจสอบบรรทัดเหล่านี้ในไฟล์ xml และแก้ไขให้ถูกต้อง
— meyasir

63

ฉันพบว่าปัญหานี้เกิดขึ้นเนื่องจากฉันมีข้อผิดพลาดในไฟล์ XML ของฉัน เมื่อคุณแก้ไขข้อผิดพลาด XML ให้ทำ clean / build มันแก้ไขปัญหา


8
เพียงแค่ช่วยให้ใครก็ตามที่อ่าน เป็นไปได้ว่าบางสิ่งในไฟล์ XML ที่ทำให้เกิดข้อผิดพลาด สำหรับฉัน (ไม่แน่ใจว่าทำไม) แต่เกิดจากเส้นโครงร่างชิ้นส่วน: android: layout_bottom = "@ id / my_list" เพียงสลับจากบรรทัดนี้จากส่วนหนึ่งเพื่อใช้ layout_top ในส่วนอื่น
— Mingsheng

สิ่งเดียวกันสำหรับฉัน! ขอบคุณสำหรับความช่วยเหลือ
— Michael

กันที่นี่! ขอบคุณ.
— เท็ดดี้วิลสัน

คำตอบที่ดี! ขอบคุณ
— Berat Eyüboğlu

ใช่ในกรณีของฉัน: ความสูงองค์ประกอบ xml ของฉันคือ '50' แทนที่จะเป็น '50dp'
— กฤษณะ Raj Salim

44

คลิกที่แล้วคลิกBuild -> Rebuild ProjectTools -> Android -> Sync Project with Gradle Files


2
วิธีนี้ใช้ได้ผล ฉันพบข้อผิดพลาดหลังจากอัพเกรดเวอร์ชั่น gradle
— Vaquita

สถานการณ์ของฉันคือ: ทุกcleanสิ่งRกลายเป็นข้อผิดพลาดทุกอย่างได้buildรับการแก้ไข แต่แน่นอน 'โครงการ' ไม่สะอาด หลังจากทำตามคำตอบนี้ในที่สุดฉันก็สามารถล้างโครงการโดยไม่ได้รับข้อผิดพลาด
— talz

เพียงเพิ่มคำตอบของ @ user2284700: ใน AS 3.1.3 "Sync Project with Gradle Files" อยู่ภายใต้เมนู "File"
— BMU

33

ตรวจสอบให้แน่ใจในAndroidManifest.xmlชื่อแพคเกจของคุณถูกต้อง ที่แก้ไขปัญหาสำหรับฉันเมื่อฉันR.whateverถูกทำเครื่องหมายสีแดง!

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


ขอบคุณ! ผมทำการทดลองขนาดเล็กที่มีการเปลี่ยนชื่อแพคเกจสำหรับ forgott เกี่ยวกับมัน ...
— ทอม

17

ไม่ทำอะไรเลย เพียงอัปเดต Android Studio แก้ไขปัญหาของฉัน! ทำงานอย่างสมบูรณ์แบบ


1
ฉันลองวิธีแก้ปัญหาทั้งหมดที่กล่าวถึงที่นี่ การอัปเดตสตูดิโอ Android แก้ไขปัญหา
— Siva K Reddy C Shiva

1
ขอขอบคุณที่ช่วยฉันประหยัดเวลาจากสิ่งนี้ให้มากขึ้น
— wmurmann

12

ฉันมีปัญหาที่คล้ายกันกับ 'com.android.tools.build:gradle:3.3.1' ฉันลองใช้วิธีแก้ไขปัญหาทั้งหมดข้างต้นไม่ได้ผล มันสร้างขึ้นจริง: ปัญหาระดับ 3.3.1 ฉันเปลี่ยนเป็น 3.2.1 แล้วก็ใช้งานได้

ดังนั้นจึงอาจมีปัญหากับรุ่น build: gradle


03.2019 สิ่งนี้ช่วย สิ่งที่น่าสนใจคือสิ่งนี้เกิดขึ้นในโครงการเดียวของฉันและอีกสองโครงการทำไม่ได้ ตอนนี้ฉันหวังว่าการอัปเดต Android Studio จะไม่ทำให้เกิดความยุ่งยากอีกต่อไป ...
— Martin Berger

9
  1. เลือกเมนูตัวเลือกไฟล์> โครงสร้างโครงการ
  2. กดตกลงบนกล่องข้อความ (การเปลี่ยนแปลงโครงสร้างโครงการไม่ได้ปรับปรุง build.gradle)
  3. เลือก "Modules" ในบานหน้าต่างด้าน "Project Settings"
  4. สำหรับแต่ละโมดูล (โครงการ) ตรวจสอบว่าส่วน "ยกเว้นโฟลเดอร์" ไม่มีโฟลเดอร์ "สร้าง" หากเป็นเช่นนั้นให้กดปุ่ม 'x' ถัดจากโฟลเดอร์ "build"
  5. กดตกลง

ตอนนี้คุณควรเห็นโฟลเดอร์ "MyAppProject / MyApp / build / source" สิ่งนี้ควรมีโฟลเดอร์ "r" (ที่สร้างไฟล์ R.java) ที่นี่คุณควรเห็น "debug", "release" เป็นสีน้ำเงิน (หากคุณมี projectFlavour ใน build.gradle ของคุณสิ่งเหล่านี้จะอยู่ภายใต้โฟลเดอร์ "") ภายในโฟลเดอร์ debug / release นั้นควรเป็นชื่อแพ็คเกจของแอปของคุณจากนั้นไฟล์ R.java ที่มีรหัสทรัพยากรของคุณทั้งหมด


1
สิ่งนี้ไม่เกี่ยวข้องอีกต่อไป แต่โปรดทราบว่าฉันไม่มีไฟล์ R.java ในโฟลเดอร์นั้นอย่างที่คุณเห็นในคำตอบของฉันต่อLoïc
— Ilya Kogan

9
  1. สร้างโครงการใหม่
  2. หาก (1) ไม่ทำงานให้รีสตาร์ท Android Studio / Eclipse

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


ในกรณีของฉันมีแอตทริบิวต์ในไฟล์ manifest.xml ที่ทำให้เกิดปัญหา ฉันนอนไม่หลับทั้งคืนจนกว่าฉันจะค้นพบที่และเพียงแค่ลบบรรทัด คุณลักษณะนี้เป็น android: fullBackupContent = ""
— Kingsley Ijike

6

ด้วยเหตุผลบางอย่างสตูดิโอ Android ใช้การตั้งค่าที่แตกต่างกันสำหรับการแก้ไขและคอมไพเลอร์ ถ้ามันใช้ได้กับคอมไพเลอร์มันก็ดี ถ้ามันไม่ทำงานสำหรับบรรณาธิการ (จะเห็นไฟล์ที่ไม่ได้แก้ไข)

คุณต้องเพิ่มไดเรกทอรีลงในแหล่งที่มาของโครงการของคุณ ตัวอย่างเช่นทรัพยากรทั้งหมดควรทำเครื่องหมายว่า "แหล่งที่มา"

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

เลือก "Modules" แล้วเลือกโครงการของคุณ และเลือกsourcesแท็บ ด้านขวาให้ค้นหาไดเรกทอรีทรัพยากรของคุณและคลิกที่ปุ่ม "แหล่งที่มา" สีน้ำเงิน ปิดทั้งหมดและควรใช้งานได้

นอกจากนี้คุณจะต้องตรวจสอบให้แน่ใจว่า

build/source/r/debugยังเป็นแหล่ง ในฉันมีbuild/source/*/debugเครื่องหมายของฉันทั้งหมดเป็นแหล่งที่มา

โมดูลหลัก. iml

<?xml version="1.0" encoding="UTF-8"?>
<module external.system.id="GRADLE" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="android" name="Android">
      <configuration>
        <option name="SELECTED_BUILD_VARIANT" value="debug" />
        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
        <option name="ALLOW_USER_CONFIGURATION" value="false" />
        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
      </configuration>
    </facet>
    <facet type="android-gradle" name="Android-Gradle">
      <configuration>
        <option name="GRADLE_PROJECT_PATH" value=":SherlockHolmes" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/build/source/r/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/rs/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/res/rs/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/r/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/rs/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/res/rs/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/aidl" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/assets" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/jni" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/rs" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/res" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/resources" isTestSource="true" />
      <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/exploded-bundles" />
      <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/symbols" />
      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
    </content>
    <orderEntry type="jdk" jdkName="Android 4.2.2" jdkType="Android SDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Sherlock.aar" level="project" />
    <orderEntry type="library" name="SlidingMenu.aar" level="project" />
    <orderEntry type="library" name="support-v4-13.0.0" level="project" />
  </component>
</module>

โครงการ iml

<?xml version="1.0" encoding="UTF-8"?>
<module external.system.id="GRADLE" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="android-gradle" name="Android-Gradle">
      <configuration>
        <option name="GRADLE_PROJECT_PATH" value=":" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <excludeFolder url="file://$MODULE_DIR$/.gradle" />
      <excludeFolder url="file://$MODULE_DIR$/build" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>

มนต์ดำ

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

นอกจากนี้คำถามนี้ขอแนะนำให้ตรวจสอบ "คอมไพเลอร์ใช้งานสร้างภายนอก"

Android Studio ไม่ได้สร้าง R.java สำหรับโครงการนำเข้าของฉัน

ข้อความด้านข้าง

นอกจากนี้ตรวจสอบให้แน่ใจว่าในรหัส java ของคุณไม่มี import android.r;จากสิ่งที่คุณแสดงทุกอย่างดูดี แปลกที่การสร้าง / แหล่งที่มาไม่ได้ถูกสร้างขึ้น ตัวอย่างเช่นฉันไม่มีบิลด์ / apk อาจเป็นเพราะคุณอยู่ในโหมดเผยแพร่และจะไม่สร้างไดเรกทอรีเหล่านั้น


สวัสดี Lo ,c ฉันเพิ่มภาพหน้าจอของโครงสร้างโครงการในคำถาม อย่างที่คุณเห็นresโฟลเดอร์ทั้งหมดถูกทำเครื่องหมายเป็น "ซอร์ส" และฉันไม่มีbuild/sourceไดเรกทอรี ฉันควรจะได้รับมันสร้าง? ถ้าเป็นเช่นนั้นได้อย่างไร
— Ilya Kogan

ไดเร็กทอรี build / source ควรถูกสร้างเมื่อสร้างเท่าที่ฉันสามารถบอกได้ สตูดิโอ Android เป็นรุ่น "อัลฟา" มันมาพร้อมกับสิ่งแปลก ๆ มากมาย ฉันมี 1.7.0_21 build/rebuil projectหนึ่งความคิดที่จะทำ หากคุณสามารถเรียกใช้ gradle จากบรรทัดคำสั่งอาจทำให้เกิดข้อผิดพลาดบางอย่างที่ไม่ปรากฏในตัวแก้ไข
— Loïc Faure-Lacroix

มันไม่ได้ถูกสร้างขึ้นแม้ว่าโครงการจะคอมไพล์และทำงานได้สำเร็จบนอุปกรณ์
— Ilya Kogan

ไฟล์ iml มีลักษณะคล้ายกับไฟล์ของคุณมากโดยมีโฟลเดอร์รวมอยู่และแยกออกจากกัน "file: // $ MODULE_DIR $ / build / source / r / debug" รวมอยู่ด้วยแม้ว่าจะไม่มีอยู่ การใช้บิลด์ภายนอกทำให้เกิดปัญหาอื่น ๆ (โครงการไม่คอมไพล์เลย) ฉันจะตรวจสอบว่าฉันอยู่ในโหมดวางจำหน่ายได้อย่างไร
— Ilya Kogan

5

นี่คือวิธีแก้ปัญหาชั่วคราวของฉันจนกว่าฉันจะหาวิธีที่ดีกว่า:

  1. ใช้ทุกสิ่งค้นหาว่า R.java สร้างขึ้นที่ไหน ในกรณีของฉันมันเป็น C:\Program Files (x86)\Android\android-studio\system\compiler\<project-name>.cb969c52\.generated\aapt\<module-name>.6badd9a4\production\com\<project-name>\<module-name>

  2. ในมุมมองโครงการคลิกโมดูลและกด F4 ละเว้นคำเตือน

  3. คลิก "+ เพิ่มรูทเนื้อหา" และเลือกโฟลเดอร์ดังกล่าว ตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมายสีน้ำเงิน (เป็นแหล่งที่มา)

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


คุณลองกับ Android Studio รุ่น 0.2.3 ล่าสุดแล้วหรือยัง? หากคุณยังคงได้รับปัญหารายงานสิ่งนี้ไปที่code.google.com/p/android/issuesเพื่อให้ Android Studio devs รับทราบและสามารถตรวจสอบและแก้ไขปัญหาได้
— reece

1
ไม่ฉันยอมแพ้บน Android Studio ฉันรัก IDE แต่ยังมีข้อบกพร่องมากมายที่ไม่เหมาะสมสำหรับการทำงานเป็นทีม เรากลับไปที่ Eclipse
— Ilya Kogan

2
ไม่มีปัญหา. เนื่องจาก Android Studio ยังอยู่ในระหว่างการพัฒนาคุณจะต้องสามารถรายงานข้อบกพร่องใด ๆ ที่คุณพบ (เพื่อให้สามารถแก้ไขได้) และทนต่อการหยาบ นี่ไม่ใช่สำหรับทุกคน
— reece

5

สิ่งนี้ใช้ได้กับฉัน:

  1. ปิดและเปิดโครงการอีกครั้ง

  2. กด "ซิงค์โครงการด้วยไฟล์ Gradle" (ถัดจากไอคอนผู้จัดการ AVD ในเมนูด้านบน) ทำซ้ำ 1-2 หาก Gradle ไม่สามารถซิงค์เป็นครั้งแรก (ฉันทำงานในครั้งที่สอง)

ทำงานกับ Android Studio 1.2.2


5

ฉันแก้ไขมันโดย:

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.

อยู่มาวันหนึ่งโดยไม่มีเหตุผลที่ชัดเจนแอปของฉันเพิ่งหยุด ... ข้อผิดพลาดทุกที่ ... ขอบคุณมาก! มันมีประโยชน์มาก!
— JFreeman

1
ให้ศีลคุณแคชที่ใช้ไม่ได้เป็นสิ่งเดียวที่ช่วยได้
— Kibi

4

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

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


4

บางครั้งข้อผิดพลาดในการสร้างเหล่านี้จะไม่เกิดขึ้นอีก หากสิ่งนี้เกิดขึ้นกับคุณลองสิ่งนี้:

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

ทำความสะอาดโครงการของคุณ! Select Build → Clean Projectสิ่งนี้จะสร้างโครงการใหม่จากศูนย์ซึ่งอาจส่งผลให้เกิดการสร้างที่ปราศจากข้อผิดพลาด

ซิงค์โครงการของคุณกับ Gradle! Select Tools → Android → Sync Project with Gradle FilesAndroid Studio จะสร้างโครงการใหม่ตั้งแต่ต้นด้วยการตั้งค่าโครงการที่ถูกต้องซึ่งสามารถช่วยแก้ไขปัญหาหลังจากเปลี่ยนการตั้งค่า Gradle ของคุณ

รัน Android Lint! ผ้าสำลีอาจให้ข้อมูลที่ดีเกี่ยวกับปัญหา หากสิ่งที่กล่าวมาไม่ได้ผลนี่คือที่ที่คุณมักจะพบปัญหาของคุณ หากต้องการเรียกใช้ Lint ให้select Analyze → Inspect Code → select Whole project → OK วิเคราะห์คำแนะนำ Lint อย่างระมัดระวัง เริ่มต้นด้วยข้อผิดพลาดแล้วคำเตือน

โชคดี.


ในกรณีของฉันมีแอตทริบิวต์ในไฟล์ manifest.xml ที่ทำให้เกิดปัญหา ฉันนอนไม่หลับทั้งคืนจนกว่าฉันจะค้นพบที่และเพียงแค่ลบบรรทัด แอตทริบิวต์เป็น android: fullBackupContent = ""
— Kingsley Ijike

3

ข้อผิดพลาดนี้เกิดขึ้นกับฉันเนื่องจากมีอินพุตที่ไม่ถูกต้องในไฟล์ activity_main.xml ของฉัน

เมื่อคุณพยายามที่จะสร้างหรือทำความสะอาดโครงการของคุณคุณจะเห็นข้อความผิดพลาด

ฉันได้รับการแก้ไขเหมืองโดยอ่านข้อความผิดพลาดที่ , แก้ไขสิ่งที่ผิดในไฟล์ xml ของฉัน จากนั้นสร้างโครงการใหม่


2

ฉันมีข้อบกพร่องนี้เมื่อไม่กี่วันที่ผ่านมาฉันลองมองไปรอบ ๆ จนกว่าฉันจะตัดสินใจติดตั้ง Android Studio อีกครั้ง มันใช้งานได้สำหรับฉัน


การติดตั้งใหม่ไม่ได้ช่วย :(
— Ilya Kogan

นี่เป็นวิธีที่หยาบมาก
— Taslim Oseni

2

เมื่อสร้างโปรเจ็กต์จากตัวอย่างในขณะที่ไม่อิมพอร์ตโปรเจ็กต์ที่มีอยู่จะดี (ป้องกันการชนกับ gradle, .idea, .iml, build, jars และ apks เช่นไฟล์ build-build ที่ไม่จำเป็นทั้งหมด) หลังจากสร้างโปรเจ็กต์ใหม่คัดลอก และวางทรัพยากรที่เกี่ยวข้องทั้งหมดฉันขอแนะนำ:

การตรวจสอบแพ็กเกจและอิมพอร์ตจากแพ็กเกจภายในโครงการ {ประกาศ AndroidManifest และการนำเข้าทั้งหมดในคลาส Java} ทรัพยากรทั้งหมด (drawable, mip-map, เลย์เอาต์และเมนู & build.gradle ของคุณ (ตัวอย่าง build.gradle เพื่อใช้กับ sdk ล่าสุด สามารถให้ตามคำขอ)) เพื่อดูว่าพวกเขามี & ถ้าประกาศสตริงและรหัสจริงมีอยู่และมีการใช้งานหลังจากที่ข้อผิดพลาดเพียงอย่างเดียวของคุณควรเป็นคำถามที่ถาม:

Bulid-> โครงการที่สะอาด

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

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

ในกรณีที่แย่ที่สุดการรีสตาร์ทเครื่องช่วย

ข้างต้นควรทำงาน รู้สึกอิสระที่จะถามคำถามหากจำเป็นเช่นโพสต์ความคิดเห็น


2

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


ที่ช่วยขอบคุณ!
— farahm

2

ฉันมีข้อผิดพลาดในการคัดลอก / นำมาใช้ซ้ำในการประกาศแพ็คเกจสำหรับรายการ

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="wrong.package.name">

ชื่อกิจกรรมหลักมีเส้นทางที่ถูกต้องดังนั้นรายการไม่มีข้อผิดพลาดที่ตรวจสอบ

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


สำหรับฉันมีแอตทริบิวต์ในไฟล์ manifest.xml ที่ทำให้เกิดปัญหา ฉันเพียงแค่ลบบรรทัด แอตทริบิวต์เป็น android: fullBackupContent = ""
— Kingsley Ijike

1

มันยังทำงานให้ฉันด้วยการทำความสะอาดโฟลเดอร์. aa / ไลบรารีด้วยตนเองและคลิกหลังจากนั้นใน "Sync Project with Gradle Files" เพื่อแก้ปัญหา เห็นได้ชัดว่า Sync นี้ไม่ได้ลบองค์ประกอบ แต่เก็บไว้ที่เดิมและเพิ่มองค์ประกอบปัจจุบัน อาจเป็นข้อผิดพลาดในการรายงาน :)


1

มีปัญหาเดียวกันกับ android studio ฉันพบว่า build / created / source / r มีเฉพาะโฟลเดอร์ release และไม่ใช่ debug ดังนั้นด้วยเหตุผลบางประการ debug build ไม่ได้สร้างคลาส R ที่ใช้งานได้

ฉันแก้ไขมันโดยการเปิดไฟล์โครงการ iml และแก้ไขบรรทัดนี้

<option name="RES_FOLDERS_RELATIVE_PATH" value="" />

ถึง

<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />

resynced กับ gradle, คอมเม้นท์บรรทัดโดยใช้ R, รัน debug เพื่อสร้าง R, ไม่ใส่เครื่องหมายคอมไลน์โดยใช้ R และรัน debug อีกครั้ง, ได้รับการแก้ไข


ฉันจะหาไฟล์ iml ได้จากที่ใด
— Cappuccino90

โฟลเดอร์เดียวกันกับที่ build.gradle ของคุณ ... เป็นไปได้มากที่สุด
— Lukas Hanacek

1

การแก้ปัญหาง่ายมาก:

ไปFile > Project Structure > appและเลือกFlavoursแท็บเลือกในรายการแบบหล่นลงสำหรับAPI 21: Android 5.0 (Lollipop)Min Sdk Version


ขอบคุณมันใช้งานได้! ฉันได้ตั้งค่า minSdkVersion เป็นค่าที่ต่ำกว่ามากและการคืนค่าแก้ไขปัญหาให้ฉัน
— Arvindh Mani

1

ในกรณีของฉันฉันทำตามคำตอบทั้งหมดที่ฉันสามารถหาได้ใน Stackoverflow และดูเหมือนว่าไม่มีใครแก้ปัญหานี้ได้ คำตอบทั้งหมดจะชี้ไปที่ไฟล์ xml เกิดความเสียหายหรือขัดแย้งกับชื่อ Gradle บางคำตอบอ้างว่าจำเป็นต้องทำความสะอาดโครงการหรือซิงค์โครงการด้วยไฟล์ Gradle ไม่มีวิธีแก้ไขปัญหาใดที่จะแก้ปัญหาได้ นอกจากนี้เมื่อฉันติดตามการสอนเกี่ยวกับวิธีการสร้างแอป Hello World และฉันเพียงแค่ติดตามหน้าต่างตัวช่วยสร้างของ Android Studio โดยไม่ต้องมีการเข้ารหัสใด ๆ เลยฉันไม่สงสัยเลยว่ามันเป็นสิ่งที่ผิดแบบนี้

TLDR

ปัญหากลายเป็นรุ่นเครื่องมือสร้าง ฉันถูกกำหนดให้23.0.0 RC1ดังนั้นฉันเปลี่ยนไป22.0.1 ฉันคิดว่าเป็นเพราะฉันใช้ Android ที่มีวางจำหน่ายครั้งล่าสุด

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



1

การทำความสะอาดโครงการช่วยในกรณีของฉัน

ไปที่

Build -> Clean Project

1

หากคุณได้รับข้อผิดพลาดนี้ให้ทำความสะอาดโครงการของคุณ

  1. ไปต่อเติมที่สตูดิโอ android ของคุณ
  2. เลือกตัวเลือกล้างโครงการ

เหตุผลที่อยู่เบื้องหลังคือการลบ.apkไฟล์ก่อนหน้าของคุณที่มีอยู่ในโฟลเดอร์โครงการ android studio ในระบบของคุณจะถูกลบ


1

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

พัฒนา evirment:

  • IDE: Android studio 3.1.2
  • ระบบ: Mac Os

สารละลาย:

ขั้นตอนที่ 1:

ค้นหาไฟล์กำหนดค่าสำหรับ Android studio
My path:

/Applications/Android Studio.app/Contents/bin/idea.properties

ขั้นตอนที่ 2:

เปลี่ยน 2500:

idea.max.intellisense.filesize=2500  

ถึง 5,000 หรือมากกว่า:

idea.max.intellisense.filesize=5000  

คุณคิดยังไงกับเรื่องนี้? มันหมายความว่าอะไร?
— Nikos Hidalgo

1
# ขนาดไฟล์สูงสุด (กิโลไบต์) IDE ควรให้ความช่วยเหลือเกี่ยวกับรหัส # ไฟล์ที่ใหญ่กว่านั้นทำงานได้ช้ากว่าและบรรณาธิการต้องการหน่วยความจำระบบโดยรวมที่สูงกว่าคือ # หากเปิดใช้การให้ความช่วยเหลือด้านรหัส ลบคุณสมบัตินี้หรือตั้งค่าเป็นจำนวนมากถ้าคุณต้องการความช่วยเหลือ # รหัสสำหรับไฟล์ใด ๆ ที่มีโดยไม่คำนึงถึงขนาดของพวกเขา idea.max.intellisense.filesize = 2500
— Yu Zhang

1

คุณต้องเปลี่ยนเส้นทาง:

ตัวอย่างเช่น

import it.example.project.myproject.R;

เปลี่ยนมา

import it.example.project.R;


0

ฉันพบข้อผิดพลาดเดียวกันปรากฎว่าไฟล์รายการมีข้อผิดพลาดบางอย่าง หลังจากแก้ไขแล้วให้คลิกสร้างโครงการอีกครั้งทำงานได้ดี บางครั้ง Android studio ไม่ได้ให้ข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์


0

ฉันถูกกัดโดยสิ่งนี้ทุกครั้งแล้วและมีสิ่งอื่นให้ลอง: จับคู่ compileSdk และ buildSdk ของคุณกับเวอร์ชันล่าสุดที่มีอยู่

ฉันเปลี่ยน compileSdkVersion จาก 21 กลับเป็น 19 เพราะดีบักเกอร์ Android Studio (1.1 canary channel) ไม่ได้ติดตามอย่างเหมาะสมในไลบรารีที่สร้างไว้ล่วงหน้า ฉันพบว่าดูเหมือนว่าจะมีการติดตามตาม buildToolsVersion (19.1.0) ซึ่งฉันตรวจสอบโดยการคลิกข้อผิดพลาดในการติดตามสแต็ก (จากนั้นเลือก 19 แทน 21) แม้ว่าฉันจะเปลี่ยนมันโดยตรงในไฟล์ build.gradle คำแนะนำแบบกราฟิกอยู่ที่นี่: https://www.blogger.com/comment.g?blogID=4722727826918942842&postID=3875998513888772255และฉันจะสรุป:

  1. Android Studio IDE เลือกไฟล์ | โครงสร้างโครงการ
  2. เลือกโมดูลของคุณเช่น "แอพ"
  3. ในฟิลด์รวบรวม SDK เลือกเวอร์ชันล่าสุด
  4. เลือกเวอร์ชันล่าสุดในเครื่องมือสร้าง

ยืนยันและโครงการควรทำการซิงค์ให้ถูกต้องโดยอัตโนมัติ

บทเรียนที่ฉันได้รับจากสิ่งนี้คือพวกเขาทั้งสองควรเหมือนกัน

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