Błąd pobierania mówi - „Nazwa wpisu” res / layout / test_toolbar.xml „collided” podczas tworzenia podpisanego pliku APK

17

Zaktualizowałem dzisiaj moje studio Androida z 3.5.x do 3.6 i otrzymuję błąd podczas generowania podpisanego pliku APK dla wariantu kompilacji z następującym komunikatem - Nazwa wpisu „res / layout / test_toolbar.xml” koliduje Nie mam żadnego układu o nazwie takiej jak ten jeden w całym projekcie. Mam niestandardowy wariant kompilacji o nazwie „ etap ” i zawsze, gdy próbuję zbudować podpisany apk, zawsze kończy się niepowodzeniem. Liczę, że znalazłem jeszcze jakieś rozwiązanie. Pomóż mi z tym problemem. Dzięki

Aktualizacja: Ten sam problem może występować również w przypadku następujących komunikatów (jak znalazłem w AS - 3.6.1 ). Nie przejmuj się więc tego rodzaju nieznanymi i nierozwiązywalnymi wiadomościami. Do tej pory znalazłem dwa nowe typy wiadomości podczas generowania podpisanego apk:

  • Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
  • Access Denied

Rozwiązanie jest takie samo. Czasami możesz potrzebować do tego Invalidate Cache and Restartswojego AS. Daj mi znać o swoich ustaleniach. Dzięki

Saadat
źródło

Odpowiedzi:

16

Przed przeczytaniem poniższego rozwiązania przeczytaj moją aktualizację od 01.04.2020, problem jest głębszy i jest w twoim kodzie.

Mam ten sam problem po aktualizacji 3.6.

* Szybkie rozwiązanie to: *

  1. usuń folder projektu \ kompilacja
  2. usuń folder projektu \ debuguj *
  3. usuń folder projektu \ wydanie *
  4. Usuń folder projektu \ aplikacja \ kompilacja
  5. Usuń folder projektu \ aplikacja \ kompilacja \ debugowanie *
  6. usuń folder projektu \ aplikacja \ kompilacja \ wydanie *

Musisz więc usunąć wszystkie katalogi kompilacji, debugowania i wydania.

Pamiętaj, że możesz nie być w stanie usunąć całego katalogu debugowania i wydania , ale możesz usunąć całą jego zawartość.

UPD:

Myślę, że naprawili dzisiaj ten błąd: wprowadź opis zdjęcia tutaj

UPD 03.03.2020: Niestety, błąd nie został naprawiony.

UPD 01.04.2020: (Nie żart z 1 kwietnia :))

Od miesiąca pracowałem z programistami Android Studio i dzisiaj powiedziano mi, żebym używał jdk zamiast jre, ponieważ powiedział jeden z głębokich błędów w logach.

Po ustawieniu jdk ( Plik-> Struktura projektu-> Lokalizacja SDK-> Lokalizacja JDK ) zamiast jre, mam kilka innych błędów, które nie zostały pokazane w „kompilacji danych wyjściowych”, więc uruchamiam Analizuj -> Sprawdź kod i dostałem osiemnaście błędów takie jak odwoływanie się do niewłaściwego identyfikatora widoku w układach, błędy orientacji (witaj w tools:ignore="MissingDefaultResource") i błędy manifestu również w orientacji: czytam, że jest to nowa aktualizacja 3.6.1 - o krajobrazie lub portrecie screenOrientation, szybko naprawiona przez Studio z tym: <activity tools:ignore="LockedOrientationActivity" />

Kiedy wszystkie błędy zostały naprawione za pomocą funkcji Analizuj -> Sprawdź kod, pomyślnie wygenerowałem podpisany plik APK za pomocą jdk, a następnie za pomocą jre (tylko do testu).

Podsumowując, ten błąd spowodował głębokie błędy, które można znaleźć tylko za pomocą Inspect Codenarzędzia.

Myślę, że AS nie pomyśli, że to błąd, myślę, że powiedzieli, że jest to nowa funkcja ulepszania twojego kodu. Myślę też, że powinieneś spróbować sprawdzić swój kod nawet bez ustawiania jdk zamiast jre.

Dodatkowe rekomendacje od wsparcia AS:

BTW podczas eksportowania releasekompilacji, uruchamiamy również, lintVitalktóry wykonuje dodatkowe kontrole i niektóre błędy są oznaczone jako fatal. Ta kontrola jest droga, więc nie występuje w debugkompilacjach

danyapd
źródło
1
Wielkie dzięki. Rozwiązałem to już. Czy na pewno jest to stabilna wersja (naprawdę)?
Saadat
1
@ Saadat nie, sprawdziłem teraz - błąd nadal tam jest.
danyapd
Dziękuję bardzo. Chciałem zaktualizować ponownie, oczekując naprawy. @danyapd
Saadat
Uważam, że ja też muszę usunąć projectFolder\app\[all flavor folders].
drmrbrewer
1
Dzięki, Build > Rebuild Projectnaprawiłem to dla mnie w Android Studio 3.6.2.
gregn3
7

Podczas generowania apka sprawdź folder docelowy, z którego usuń plik output.json i app-debug.apk z folderu debugowania. Spróbuj zbudować to samo po tym. AFAIK, jest to błąd dla studia Android, mam nadzieję, że mogą to naprawić wkrótce :)

Ameena Shafeer
źródło
1
Dzięki za twoją odpowiedź. Zrobiłem już to samo i rozwiązałem mój problem. :)
Saadat
1
Wielkie dzięki!! znalazłem to po 2,5 godzinach walki
Kishita Variya
Dzięki za to, zadziałało jak urok
Brian
4

Usunąłem poprzednie wyniki kompilacji dla wariantu kompilacji, w tym plik APK. To mi pomogło

Vladislav Vatrushkin
źródło
1
Próbowałem usunąć buildkatalog jako całość, nadal mam ten sam problem. Czy potrafisz w pełni rozwinąć to, co zrobiłeś?
Pusparaj
Czy usuwasz także katalog kompilacji w katalogu głównym projektu i katalog aplikacji / build? W moim projekcie ścieżka wyjściowa apk jest zmieniona i po prostu usuwam poprzedni plik apk, w którym się znajdował.
Vladislav Vatrushkin
1

Dzieje się tak, gdy korzystasz z automatycznego przeglądania, wiązania za pomocą Kotlin lub funkcji viewBinding 3.6.

W przypadku dodawania plików, których element ma ten sam identyfikator, ViewBinding myli i tworzy taki błąd.

Pozwól, że ci pomogę przez przykładową klasę adaptera, która ma dwa pliki układu oddzielone według widoku Typ:

import kotlinx.android.synthetic.main.frag_subscription_recommend.view.*


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
   return ViewHolder(
        LayoutInflater.from(parent.context).inflate(
            if (viewType == 1) {
                R.layout.frag_subscription_recommend
            } else
                R.layout.frag_subscription_common,
            parent,
            false
        )
    )
}

onBinding(){
  holder.itemView.id_button_submit.setOnClickListener {}
}

// które w przypadku pomylenia pełnego zasobu lub układu spełniają wymaganie bcoz oba mają takie same identyfikatory przycisków. na wypadek, gdybyś musiał użyć:

 onBinding(){
  holder.itemView.findViewById<Button>(R.id.id_button_submit).setOnClickListener {}
}

które umożliwiają starą implementację.

Daj mi znać, jeśli to działa po twojej stronie?

Jatin Sahgal
źródło
1
Przepraszamy, ale problem dotyczył katalogów kompilacji, debugowania i wydania. w tym wyjściowy plik json. W każdym razie dziękuję za odpowiedź
Saadat
1

Miałem ten sam błąd po aktualizacji Androida Studio i rozwiązałem problem, czyszcząc tylko projekt (Kompilacja> Wyczyść projekt)! :)

Agathe Casgrain-Cyr
źródło