เหตุใด Android Studio จึงรายงาน“ URI ไม่ได้ลงทะเบียน” [ปิด]


161

ดังนั้นฉันจึงลอง Android Studio เพราะฉันชอบ Resharper และสังเกตว่า IDE มีฟังก์ชั่นการทำงานบางอย่างอยู่ภายใน หลังจากได้สร้างโครงการใหม่เริ่มต้นฉันเพิ่มไฟล์เลย์เอาต์ใหม่และต้องการเปลี่ยนเลย์เอาต์ตัวอย่าง 'hello world' ที่เป็นค่าเริ่มต้นและฉันได้รับข้อผิดพลาด "URI ไม่ได้ลงทะเบียน" ในบรรทัดต่อไปนี้:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

ฉันยังไม่ได้ทำอะไรกับโครงการที่สร้างขึ้นเป็นค่าเริ่มต้น ฉันเจอคำถามอื่นที่ดูเหมือนว่าเกี่ยวข้อง ( โครงการ Intellij Android โครงการคี URI ไม่ได้ลงทะเบียน? ) แต่เพียงเพิกเฉยสิ่งที่รู้สึกแปลก ๆ กับฉัน ฉันลองแล้ว แต่นั่นทำให้RelativeLayout(และน่าจะเป็นเรื่องอื่นที่เกี่ยวข้องกับ Android) ไม่ได้รับการยอมรับอีกต่อไป (ข้อความแสดงข้อผิดพลาด: "ไม่พบการประกาศองค์ประกอบ 'RelativeLayout'")

ความคิดเห็นเกี่ยวกับวิธีการแก้ปัญหานี้?


9
การปิดและเปิดสตูดิโอ Android แก้ไขปัญหานี้สำหรับฉัน :)
Umair

1
ทำให้ข้อมูลในแคชไม่ถูกต้องและเริ่มการทำงานใหม่
thewhitetulip

คำตอบ:


150

คุณกำลังมีปัญหานี้เพราะคุณอยู่ผิดปลายทาง! ไดเรกทอรีที่ถูกต้องสำหรับไฟล์ทรัพยากร Layout ต้องอยู่ภายใต้ "res-layout" ไม่ใช่ "res-all-layout"


2
อ่าใช่คุณพูดถูก ความผิดพลาดที่ฉันทำคือฉันเปิดไฟล์จาก <project root> \ <ชื่อโครงการ> \ build \ res \ all \ debug \ layout (โดยค่าเริ่มต้นฉันคิดว่าเปิดอยู่และใช้งานจากบนลงล่างฉันเดาว่า ที่อธิบายถึงความสับสน) แต่ควรดูที่ <project root> \ <project project> \ src \ main \ res \ layout แทน
Xilconic

ฉันมีปัญหาเดียวกันสำหรับไฟล์ชัดแจ้งว่าต้องทำอย่างไร
Prasad

ขอบคุณ!! มันใช้งานได้ดีสำหรับฉัน ..
Vinoth Vino

1
ฉันพบปัญหาเดียวกัน แต่เส้นทางของฉันถูกต้อง ในที่สุดมันก็ถูกแก้ไขโดยโมฆะ / รีสตาร์ท เพียงแค่ทำให้แคชใช้งานไม่ได้ AUGH! :)
steven smith

1
สำหรับฉันโมฆะ / รีสตาร์ททำงาน Thanks @stevensmith
Abdul Samad

51

สำหรับฉันนี่เป็นเพราะฉันใช้ debug และ release build variant ฉันเพิ่มโฟลเดอร์ใหม่ src / debug / res / layout / some_layout.xml ไฟล์ด้วยตนเองและไม่รู้จัก URI ฉันเปลี่ยนรุ่นบิลด์ที่จะปล่อยแล้วกลับไปแก้จุดบกพร่อง สิ่งนี้ทำให้ Android Studio โหลดใหม่บางอย่างและข้อผิดพลาดหายไป

แก้ไข: ตรวจสอบด้วยว่าคุณมีชื่อไฟล์ที่ถูกต้อง ฉันมีปัญหานี้อีกครั้งโดยเพิ่ม AndroidManifest.xml ดีบัก แต่ตั้งชื่อผิดว่า AndroidManifest.xml.xml


2
สิ่งนี้ใช้ได้สำหรับฉัน สำหรับผู้ที่มองหาวิธีการเปลี่ยนชุดคำสั่งการสร้างจะอยู่ที่แผงด้านซ้ายสุดของ AS ซึ่งเขียนไปด้านข้าง คลิกที่มันจากนั้นภายใต้ "แก้ปัญหา" เป็นจริงแบบเลื่อนลง
lemuel

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

มันใช้งานได้เหมือนมนต์เสน่ห์ !! ขอบคุณ
Virag Brahme

คุณบันทึกวันของฉัน !!
Adi

39

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

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

โดยวิธีการถ้าฉันต้องการใช้ namespace ที่กำหนดเองเช่นคุณฉันจะเขียนตัวระบุทรัพยากรเป็นชื่อแพคเกจของฉันตามที่ฉันกำหนดแอตทริบิวต์แพคเกจ AndroidManifest.xml ขององค์ประกอบรายการด้านล่างเป็นรหัสของฉัน

<manifest package="com.my.name.android">
    ...
</manifest>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/apk/res/com.my.name.android">
</RelativeLayout>

หวังว่านี่จะช่วยคุณได้


2
@Michael Alan Huff ขอบคุณมากสำหรับการสอนฉัน
VinceStyling

ไม่มีปัญหา :) ซ้อนกันอย่างมีความสุข
Michael Alan Huff

17

ปัญหานี้ปรากฏขึ้นทันทีสำหรับฉันโดยไม่มีเหตุผล ฉันเพิ่งปิดแท็บทั้งหมดใน Android Studio และเปิดไฟล์ xml อีกครั้งซึ่งมีปัญหา แก้ไขปัญหา! :)


3
ช่วยชีวิตฉัน ... :)
bangkokguy

นั่นเป็นเพียงการช่วยเหลือจนกระทั่งในครั้งต่อไปที่ฉันพยายามเรียกใช้แอป
AvielNiego

ทำให้ข้อมูลในแคชไม่ถูกต้องและเริ่มการทำงานใหม่
thewhitetulip

8

ใน Android Studio 3.1.2 ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากการตรวจสอบหน่วยความจำแคชไม่ถูกต้อง,

ไปที่โฟลเดอร์โครงการและลบเนื้อหาทั้งหมดในโฟลเดอร์ .idea

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


6

มันเป็นปัญหาของปลั๊กอิน

  1. รีสตาร์ทสตูดิโอ Android ของคุณ
  2. มันจะแสดงหน้าต่างป๊อปอัพสำหรับเปิดใช้งานปลั๊กอิน
  3. คลิกที่เปิดใช้งานปลั๊กอินแล้วคลิกที่ตกลง

จากนั้นจะรีสตาร์ทสตูดิโอของคุณโดยอัตโนมัติและทำงานได้ดี

หวังว่ามันจะได้ผล


5

ปัญหาของฉันคือโครงสร้างโฟลเดอร์ของฉันเป็น:

MyProject/ res/ layout/ main.xml layout-land/ main.xml

( Slayout-landโฟลเดอร์ของฉันอยู่ในlayoutโฟลเดอร์ของฉัน)

ฉันเปลี่ยนโครงสร้างเป็นสิ่งนี้และมันได้ผลกับฉัน:

MyProject/ res/ layout/ main.xml layout-land/ main.xml

ฉันหวังว่านี่จะช่วยได้!


5

ไม่ทราบสาเหตุที่อยู่เบื้องหลังข้อผิดพลาดนี้ แต่ฉันพบที่ใดที่หนึ่งและแก้ไขปัญหาได้

  • ไปที่ "ไฟล์> โครงสร้างโครงการ> โมดูล"
  • คลิก "เพิ่ม(+) "
  • คลิก "android" และ "สมัคร" แล้วคลิก "ตกลง"

4

ปรากฎว่าฉันกำลังแก้ไขเวอร์ชัน DEBUG ของ xml เพื่อแก้ไขเพียงแค่ปิดแท็บที่มีข้อผิดพลาดและเปิดใหม่อีกครั้ง


3

ฉันมีข้อผิดพลาดเดียวกัน ฉันแก้ไขมันโดยการนำเข้าโครงการอีกครั้งไปยังสตูดิโอ Android


2

สำหรับฉันปลั๊กอินAndroid Supportรับปิดการใช้งานอย่างใด การเปิดใช้งานปลั๊กอินทำงานได้อีกครั้งสำหรับฉัน

Settings > Plugins > Android Support

2

เลือกรสชาติที่เหมาะสมใน Build Variants

หากคุณกำลังดูไฟล์ใดไฟล์หนึ่งภายใต้ Flavour1 ให้เลือกรสชาตินั้นในหน้าต่าง BuildVariants

หาก IDE ของคุณคือ Android Studio (3.2.1 ตามการเขียนนี้) คุณควรพบหน้าต่าง Build Variants ที่ด้านล่างซ้ายจัดแนวตั้ง


1

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



1

เริ่มรับสิ่งนี้อีกครั้งสิ่งที่ใช้งานได้จริงคือการเพิ่มขยะลงใน build.gradle จากนั้นลองและซิงค์ เมื่อมันล้มเหลวในการลบขยะและซิงค์อีกครั้ง หลังจากการจัดทำดัชนีก็ใช้งานได้


1
  • ไปที่ "การตั้งค่า> ภาษาและกรอบงาน> Schemas และ DTDS"
  • คลิก "เพิ่ม (+)"
  • คลิก "ใช้" แล้ว "ตกลง"

หวังว่ามันจะได้ผล


เพียงเพิ่ม URL ของคุณ
Scarlett

1

สำหรับฉันฉันโคลนโครงการจาก gitlab มีสารบัญ:

TradeClient / TradeClient / app / ...

จากนั้นฉันพบปัญหานี้ฉันแก้ปัญหาโดยวิธีด้านล่าง:

  • ลบพา ธ กลาง "TradeClient" ในฐานะ TradeClient / app / ...
  • จากนั้นไฟล์ -> ทำให้แคช / รีสตาร์ทไม่ถูกต้อง

0

ระบบการสร้างใหม่ใน Android Studio สร้างbuildโฟลเดอร์ barfs การตรวจสอบรหัสในโฟลเดอร์นี้เช่นเดียวกับgradleโฟลเดอร์ โฟลเดอร์เหล่านี้ควรถูกละเว้นอย่างน่าเชื่อถือเมื่อใช้การตรวจสอบรหัส

ฉันแจ้งปัญหากับทีม Android Studio ที่:

https://code.google.com/p/android/issues/detail?id=56415


0

ฉันมีปัญหานี้ตอนนี้ - ฉันสร้างโฟลเดอร์ใหม่ภายใต้โฟลเดอร์เลย์เอาต์ซึ่งจะประกอบด้วย xml ทั้งหมดที่เกี่ยวข้องกับหน้า "โฮม" ของแอพของฉันแล้วโฟลเดอร์อื่นที่จะเกี่ยวข้องกับหน้า "การตั้งค่า" ของฉันตามที่ฉันต้องการจัดระเบียบ XML

อย่างไรก็ตาม android จะรับรู้เฉพาะโฟลเดอร์เลย์เอาต์สำหรับ xml ไม่ใช่โฟลเดอร์ layout / home หรือ layout / settings ดังนั้นนั่นเป็นสาเหตุที่ทำให้ฉันเกิดข้อผิดพลาด

ขอบคุณคำตอบ Mazen Kasser เขาช่วยฉันในการหาสิ่งนี้


0

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


0

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


0

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


0

ข้อเสนอแนะอื่นซึ่งเป็นทางออกสำหรับฉัน: ฉันได้รับข้อผิดพลาดในบรรทัด

<resources xmlns:ns1="http://schemas.android.com/tools" xmlns:ns2="urn:oasis:names:tc:xliff:document:1.2">

ในไฟล์ values.xml ที่สร้างขึ้นโดยอัตโนมัติระหว่างกระบวนการสร้าง

มันถูกแก้ไขโดยการเพิ่มandroidคำนำหน้าในไฟล์ styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="textColorPrimary">@color/textColorPrimary</item>
        <item name="colorBackground">@color/colorPrimaryDark</item>
    </style>

ต้องเปลี่ยนเป็น

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/textColorPrimary</item>
        <item name="android:colorBackground">@color/colorPrimaryDark</item>
    </style>

0

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


0

ทุกคนที่ได้รับข้อผิดพลาดนี้ทันทีหลังจากนำเข้าโครงการอาจกำลังนำเข้า / ซิงค์เกรดเริ่มต้นไม่สำเร็จ มักจะพบกับข้อผิดพลาดร้ายแรง (กระพริบเครื่องหมายอัศเจรีย์ที่มุมขวาล่าง) สำหรับฉันนี่เป็นสาเหตุที่แปลกมาก (โฟลเดอร์โครงการเชื่อมโยงกัน): https://stackoverflow.com/a/52952148/44166


0

ฉันพบปัญหาเดียวกันในการเปิด android React Native Project ใน Android Studio

สาเหตุหลักคือฉันเปิดโฟลเดอร์รูทของ React Native Project แทนโฟลเดอร์ androidของ React Native Project

เปิดโครงการอีกครั้งภายใต้โฟลเดอร์ android ของ React Native Project เพื่อแก้ไขปัญหาของฉัน


-3

ลองติดตั้งปลั๊กอินตัวติดตาม android คุณจะพบมันในสตูดิโอ

รีสตาร์ทสตูดิโอ

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