Dlaczego Android Studio zgłasza „URI nie jest zarejestrowany”? [Zamknięte]

161

Spróbowałem więc Android Studio, ponieważ bardzo lubię Resharper i zauważyłem, że IDE ma wbudowaną część swojej funkcjonalności. Po utworzeniu domyślnego nowego projektu dodałem nowy plik układu i chciałem zmienić istniejący domyślny przykładowy układ „Hello world”. Otrzymałem błąd „URI nie jest zarejestrowany” w następujących wierszach:

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

Nie zrobiłem jeszcze nic więcej w domyślnym wygenerowanym projekcie. Natknąłem się na inne pytanie, które wydaje się być powiązane ( nie zarejestrowano identyfikatora URI schematu projektu Intellij Android? ), Ale ignorowanie czegoś wydaje mi się dziwne. Rzeczywiście próbowałem, ale to powoduje RelativeLayout(i prawdopodobnie wszystkie inne rzeczy związane z Androidem) nie są już rozpoznawane (komunikat o błędzie: „Nie można znaleźć deklaracji elementu„ RelativeLayout ””).

Jakieś pomysły, jak rozwiązać ten problem?

Xilconic
źródło
9
Zamknięcie i ponowne otwarcie Android Studio rozwiązało ten problem dla mnie :)
Umair
1
Unieważnij i zrestartuj pamięć podręczną, a potem działa
thewhitetulip

Odpowiedzi:

150

Masz ten problem, ponieważ jesteś w złym miejscu docelowym! Prawidłowy katalog dla pliku zasobów układu musi znajdować się w „res-layout”, a nie „res-all-layout”

Mazen Kasser
źródło
2
Ach tak, masz całkowitą rację. Błąd, który popełniłem, polegał na tym, że otworzyłem plik z <katalogu głównego projektu> \ <nazwa projektu> \ build \ res \ all \ debug \ layout (myślę, że jest on domyślnie otwarty i przyzwyczajony do pracy od góry do dołu) to wyjaśnia zamieszanie). Zamiast tego rzeczywiście należy spojrzeć na <Project root> \ <Project Name> \ src \ main \ res \ layout.
Xilconic
miałem ten sam problem z plikiem manifestu, co robić
Prasad
Dziękuję Ci!! U mnie działa świetnie…
Vinoth Vino,
1
Trafiłem na ten sam problem, ale moje ścieżki były prawidłowe. Ostatecznie został naprawiony przez unieważnienie / ponowne uruchomienie. Samo unieważnienie pamięci podręcznej nie zadziałało. AUGH! :)
steven smith
1
dla mnie unieważnienie / ponowne uruchomienie działało. dzięki @stevensmith
Abdul Samad
51

U mnie było tak, ponieważ używałem wariantu kompilacji do debugowania i wydania. Dodałem ręcznie nowe foldery src / debug / res / layout / some_layout.xml i nie rozpoznałem URI. Zmieniłem wariant kompilacji na wydanie, a następnie wróciłem do debugowania. To spowodowało, że Android Studio coś przeładowało, a błąd zniknął.

EDYCJA: Sprawdź również, czy masz poprawną nazwę pliku. Miałem ten problem ponownie, dodając debugowanie AndroidManifest.xml, ale omyłkowo nazwał go AndroidManifest.xml.xml.

eliasbagley
źródło
2
To zadziałało dla mnie. Dla tych, którzy szukają sposobu zmiany wariantu kompilacji, znajduje się on w lewym panelu AS, napisany z boku. Kliknij go, a pod nim „debuguj” znajduje się w rzeczywistości menu.
lemuel
1
Dla mnie to samo było prawdą. Jeśli patrzysz na inny układ smakowy dostosowany do aplikacji, to co jest ładowane przez studio Android, pojawi się błąd.
Neeraj Shukla
To działa jak urok !! dzięki
Virag Brahme
Uratowałeś mój dzień !!
Adi
39

Używam Intellij IDEA, ale myślę, że będzie działać również w Android Studio, czy widzisz "Dziennik zdarzeń" w prawym dolnym rogu IDE, czy był taki komunikat " Wykryto strukturę Androida w projekcie Configure ", to znaczy, że powinien mieć konfigurację szkieletową. Jeśli tak, po prostu kliknij łącze do wiadomości.
W ten sam sposób możesz przejść do „ Plik> Struktura projektu> Moduły ”, a następnie dodać aspekt systemu Android.

wprowadź opis obrazu tutaj

Nawiasem mówiąc, jeśli chcę użyć niestandardowej przestrzeni nazw, tak jak ty, zapiszę identyfikator zasobu jako nazwę mojego pakietu, ponieważ definiuję atrybut pakietu AndroidManifest.xml elementu manifestu, poniżej jest mój kod.

<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>

Mam nadzieję, że to ci pomoże.

VinceStyling
źródło
2
@Michael Alan Huff, bardzo dziękuję za to, że mnie nauczyłeś.
VinceStyling
nie ma problemu :) miłego układania.
Michael Alan Huff
17

Ten problem pojawił się u mnie nagle, bez powodu. Właśnie zamknąłem wszystkie karty w Android Studio i ponownie otworzyłem plik xml, który miał problemy. Problem rozwiązany! :)

Regis_AG
źródło
3
uratował mi życie ... :)
bangkokguy
to pomaga tylko do następnego razu, gdy próbuję uruchomić aplikację
AvielNiego,
Unieważnij i zrestartuj pamięć podręczną, a potem działa
thewhitetulip
8

W Android Studio 3.1.2 ten błąd występuje z powodu nieprawidłowego sprawdzania poprawności pamięci podręcznej.,

Przejdź do folderu Project i usuń całą zawartość z folderu .idea

Spowoduje to usunięcie pamięci podręcznej, a ponowne załadowanie projektu spowoduje utworzenie nowego folderu pamięci podręcznej i sprawi, że będzie dobrze.,

Kulasekar
źródło
6

To problemy z wtyczkami.

  1. Uruchom ponownie swoje studio Android.
  2. Pokaże się okienko pop umożliwiające włączenie wtyczek
  3. kliknij włącz wtyczki, a następnie kliknij OK.

wtedy automatycznie zrestartuje twoje studio i wszystko będzie dobrze.

mam nadzieję, że to zadziała.

Dalvinder Singh
źródło
5

Mój problem polegał na tym, że moje foldery miały następującą strukturę:

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

(Mój Slayout-landfolder był w moim layoutfolderze)

Zmieniłem strukturę na taką i u mnie zadziałało:

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

Mam nadzieję, że to pomoże!

androidtitan
źródło
5

Nie znam przyczyny tego błędu, ale gdzieś się o tym dowiedziałem i to rozwiązało mój problem.

  • Przejdź do „Plik> Struktura projektu> Moduły”
  • Kliknij „dodaj (+)
  • Kliknij „android” i „zastosuj”, a następnie „ok”
Mayank Raj
źródło
4

okazuje się, że edytowałem wersję DEBUG pliku xml, aby to naprawić, po prostu zamknij zakładkę z błędem i otwórz ją ponownie

Dinesh Kumar
źródło
3

miałem ten sam błąd. Rozwiązałem to, ponownie importując projekt do studia Android.

Nicolás Schmidt Gubbins
źródło
2

Dla mnie Wtyczka Android Supportzostaje w jakiś sposób wyłączona. Włączenie wtyczek ponownie zadziałało.

Settings > Plugins > Android Support
Dipali s.
źródło
2

Wybierz odpowiedni smak w wariantach budowania.

Jeśli przeglądasz określony plik pod Flavour1, wybierz ten smak w oknie BuildVariants.

Jeśli twoim IDE jest Android Studio (3.2.1 w chwili pisania tego tekstu), powinieneś znaleźć okno Build Variants w lewym dolnym rogu, wyrównane pionowo.

Mahi
źródło
1

Czasami ten błąd jest skorelowany z innymi błędami w twoim manifeście. Sprawdź, czy brakuje jakichś zależności i czy wszystkie tagi są zamknięte. W moim przypadku usunąłem folder w folderze / res, przywróciłem go i ten błąd zniknął.

Cristian Traìna
źródło
1

Dla mnie w szkodliwych plikach xml brakowało wiersza nagłówka ...

<?xml version="1.0" encoding="utf-8"?>

Dodanie tego naprawiło problem.

Clark Battle
źródło
1

Zacząłem znowu to robić. W rzeczywistości działa teraz, aby dodać trochę śmieci do pliku build.gradle. Następnie spróbuj zsynchronizować. Gdy się nie powiedzie, usuń śmieci i zsynchronizuj ponownie. Po zindeksowaniu działa.

Manoj Gopal
źródło
1
  • Przejdź do „Preferencje> Języki i struktury> Schematy i DTDS”
  • Kliknij „dodaj (+)”
  • Kliknij „Zastosuj”, a następnie „OK”

mam nadzieję, że to zadziała.

Scarlett
źródło
po prostu dodaj swój adres URL.
Scarlett
1

Dla mnie klonuję projekt z gitlab, jest spis treści:

TradeClient / TradeClient / aplikacja / ...

wtedy napotykam ten problem, rozwiązuję problem za pomocą poniższej metody:

  • usuń środkową ścieżkę „TradeClient”, jako TradeClient / app / ...
  • następnie Plik -> Unieważnij pamięci podręczne / Uruchom ponownie ...
zhangliang
źródło
0

Nowy system kompilacji w Android Studio tworzy buildfolder. Pasek kontroli kodu znajduje się w tym folderze, a także w gradlefolderze. Te foldery należy zignorować podczas przeprowadzania inspekcji kodu.

Zgłosiłem problem z zespołem Android Studio pod adresem:

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

Saad Farooq
źródło
0

Miałem ten problem teraz - utworzyłem nowy folder w folderze układu, który zawierałby cały plik XML związany z moją stroną główną mojej aplikacji, a następnie inny folder, który odnosiłby się do mojej strony „ustawień”, ponieważ chciałem uporządkować xml.

Jednak system Android rozpoznaje tylko folder układu dla plików XML, a nie folder układu / domu lub układu / ustawień, dlatego właśnie wyświetlał mi błąd.

Dzięki odpowiedzi Mazena Kassera, pomógł mi to rozgryźć.

Szymon
źródło
0

Wpadłem na tę niedawną próbę migracji istniejącej aplikacji do Material Design. Wszystko, co musiałem zrobić, aby to naprawić, to zmienić wersję Compile SDK projektu. Plik | Ustawienia projektu. Wybierz aplikację i wybierz wersję Compile SDK dla wersji Lollipop lub nowszej.

Terry Ray
źródło
0

Każde wymienione tutaj rozwiązanie pomogło mi. Opublikuję swój problem na wypadek, gdyby był pomocny dla kogoś. W moim przypadku błąd występował przy użyciu wiązania danych . Wygląda na to, że za pomocą powiązania danych XML tworzone są pośrednie. Jeśli wystąpi błąd podczas próby otwarcia, wyświetli się pośredni plik XML z tym „ niezarejestrowanym identyfikatorem URI ” zamiast otwierania właściwego pliku XML z błędem.

TomCobo
źródło
0

Miałem ten problem i dla mnie było to spowodowane tworzeniem i manipulowaniem plikami zasobów poza Android Studio. Postępowałem zgodnie z instrukcjami dotyczącymi tworzenia nowych plików zasobów i folderów za pośrednictwem Android Studio i rozwiązałem problem. Musisz utworzyć nowy katalog Resource File Not. Pozwoli ci to określić lub utworzyć katalog, jeśli tego potrzebujesz. Jeśli tworzysz katalogi dla układów dla różnych wersji, wprowadź informacje u góry, w tym nazwę pliku zasobów, który chcesz skopiować do nowego folderu, wybierz Wersja i wprowadź wersję Androida. Utworzy odpowiedni katalog z kopią twojego zasobu.

user2697952
źródło
0

Kolejna sugestia, która była dla mnie rozwiązaniem: mam błąd w linii

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

w pliku values.xml, który został automatycznie wygenerowany podczas procesu kompilacji.

Zostało to rozwiązane przez dodanie androidprzedrostka w pliku 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>

musiał zostać zmieniony na

<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>
DanD
źródło
0

Co mi to naprawiło, o czym do tej pory nie widziałem - jeśli masz wiele „smaków”, upewnij się, że aktualnie wybrany „wariant kompilacji” odpowiada smakowi pliku układu, który próbujesz wyświetlić.

Si.
źródło
0

Każdy, kto otrzyma ten błąd zaraz po zaimportowaniu projektu, może mieć nieudany początkowy import / synchronizację stopni. Zwykle występuje z poważnymi błędami (migający wykrzyknik w prawym dolnym rogu). Dla mnie to była bardzo dziwna przyczyna (folder projektu był połączony symbolicznie): https://stackoverflow.com/a/52952148/44166

PAStheLoD
źródło
0

Napotkałem ten sam problem podczas otwierania Android React Native Project w Android Studio.

Główną przyczyną jest to, że otworzyłem folder główny projektu React Native zamiast folderu Android projektu React Native.

Ponowne otwarcie projektu w folderze Androida React Native Project rozwiązało mój problem.

V-SHY
źródło
-3

Spróbuj zainstalować wtyczkę śledzenia systemu Android. znajdziesz to w studio.

Uruchom ponownie studio

Rajat Bhandari
źródło