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.