47
votes

Obtenir l'erreur indique - "Le nom de l'entrée 'res / layout / test_toolbar.xml' est entré en collision" lors de la création d'un apk signé

J'ai mis à jour mon studio Android de 3.5.x à 3.6 aujourd'hui et j'obtiens une erreur lors de la génération d'apk signé pour la variante de construction affichant le message suivant - Le nom de l'entrée 'res / layout / test_toolbar.xml' est entré en collision Je n'ai aucune mise en page nommée comme ceci un dans tout le projet du tout. J'ai une variante de construction personnalisée nommée " stage " et chaque fois que j'essaie de créer un apk signé, cela échoue toujours. Je compte trouver encore une solution. Veuillez m'aider avec ce problème. Merci

Mise à jour: Le même problème peut également se produire avec les messages suivants (comme je l'ai trouvé dans AS - 3.6.1 ). Ne vous inquiétez donc pas de ce genre de messages inconnus et non résolubles. Jusqu'à présent, j'ai trouvé deux nouveaux types de messages en générant un apk signé:

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

La solution est la même. Parfois, vous devrez peut-être Invalidate Cache and Restart votre AS pour cela. Faites-moi savoir vos découvertes. Merci


0 commentaires

18 Réponses :


30
votes

J'ai supprimé les sorties de construction précédentes pour la variante de construction, y compris le fichier APK. C'est ce qui m'a aidé


2 commentaires

J'ai essayé de supprimer le répertoire de build dans son ensemble, j'ai toujours le même problème. Pouvez-vous expliquer ce que vous avez fait dans son intégralité?


Supprimez-vous également le répertoire de construction à la racine du projet et le répertoire app / build? Dans mon projet, le chemin de sortie d'apk est modifié et je supprime simplement le fichier apk précédent où il se trouvait.



19
votes

Lors de la génération de l'apk, recherchez le dossier de destination, à partir duquel supprimez output.json et app-debug.apk du dossier de débogage. Essayez de construire le même après cela. AFAIK, c'est un bogue pour le studio Android, j'espère qu'ils pourraient corriger cela bientôt :)


0 commentaires

2
votes

Cela se produit lorsque vous utilisez la fonction auto viewBinding, Binding à l'aide de Kotlin ou viewBinding de la version 3.6.

Dans le cas où vous ajoutez des fichiers dont l'élément partage les mêmes identifiants, ViewBinding confond et crée une telle erreur.

Laissez-moi vous aider par un exemple de classe Adapter qui a deux fichiers de mise en page séparés par type de vue:

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

// qui en cas de confusion entre la ressource ou la mise en page qui remplissent complètement l'exigence bcoz ont les mêmes identifiants de bouton. au cas où vous auriez à utiliser:

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

qui permettent l'ancienne implémentation.

Faites-moi savoir si cela fonctionne de votre côté?


1 commentaires

Désolé, mais le problème venait des répertoires de construction, de débogage et de publication. y compris le fichier json de sortie. Quoi qu'il en soit, merci pour votre réponse



67
votes

Avant de lire la solution ci-dessous, veuillez lire ma mise à jour du 01.04.2020, le problème est plus profond et il est dans votre code.

J'ai le même problème après cette mise à jour 3.6.

* La solution rapide est: *

  1. supprimer projectFolder \ build
  2. supprimer projectFolder \ debug *
  3. supprimer projectFolder \ release *
  4. supprimer projectFolder \ app \ build
  5. supprimer projectFolder \ app \ build \ debug *
  6. supprimer projectFolder \ app \ build \ release *

Vous devez donc supprimer tous les répertoires de construction, de débogage et de publication.

Notez que vous ne pourrez peut-être pas supprimer des répertoires de débogage et de publication entiers, mais vous pouvez supprimer tout leur contenu.

UPD:

Je pense qu'ils ont corrigé ce bug aujourd'hui: entrez la description de l'image ici

UPD 03.03.2020: Malheureusement, le bogue n'est pas corrigé.

UPD 01.04.2020: (Pas une blague du 1er avril :))

Depuis un mois, j'ai travaillé avec les développeurs d'Android Studio et aujourd'hui, on m'a dit d'utiliser jdk au lieu d'utiliser jre, car l'une des erreurs profondes dans les journaux le disait.

Après avoir défini jdk ( Fichier-> Structure du projet- > Emplacement du SDK- > Emplacement JDK ) au lieu de jre, j'ai d'autres erreurs qui n'ont pas été affichées dans la "sortie de construction", alors j'exécute Analyser -> Inspecter le code et j'ai DIX-HUIT erreurs comme la référence à un mauvais identifiant de vue dans les mises en page, des erreurs d'orientation (salut aux tools:ignore="MissingDefaultResource" ) et des erreurs dans le manifeste également avec l'orientation: j'ai lu qu'il s'agit d'une nouvelle mise à jour de la version 3.6.1 - à propos de l' screenOrientation paysage ou portrait , corrigé rapidement par Studio avec ceci: <activity tools:ignore="LockedOrientationActivity" />

Lorsque toutes les erreurs ont été corrigées avec Analyser -> Inspecter le code, j'ai généré avec succès un APK signé en utilisant jdk, puis en utilisant jre (juste pour le test).

Donc, en résumé, ce bogue est dû à des erreurs profondes que vous ne pouvez découvrir qu'avec l'outil Inspect Code .

Je pense que AS ne pensera pas que c'est un bogue, je pense qu'ils diront que c'est une nouvelle fonctionnalité pour améliorer votre code. Je pense également que vous devriez essayer d'inspecter votre code même sans définir jdk au lieu de jre.

Recommandation supplémentaire du support AS:

BTW lors de l'exportation d'une release version, nous lintVital également lintVital qui effectue des vérifications supplémentaires et a des erreurs marquées comme fatal . Cette vérification est coûteuse et ne se produit donc pas dans les versions de debug


7 commentaires

Merci beaucoup. Je l'ai déjà résolu. Êtes-vous sûr que c'est une version stable (vraiment)?


@Saadat non, j'ai vérifié maintenant - bug toujours là.


Merci beaucoup. J'allais à nouveau mettre à jour en attendant de corriger. @danyapd


Je trouve que je dois aussi supprimer projectFolder\app\[all flavor folders] .


@Saadat regarde ma nouvelle modification et essaie d'inspecter votre code pour toute erreur.


Merci, un Build > Rebuild Project corrigé pour moi, dans Android Studio 3.6.2.


dans mon cas, j'ai supprimé le dossier de projet, le dossier de construction pour le module d'application et les dossiers de débogage et de publication pour le module d'application, et redémarré android studio avec l'option d'invalider le cache



7
votes

J'ai eu la même erreur après la mise à jour du studio android et je résout le problème en nettoyant uniquement le projet (Build> Clean Project)! :)


0 commentaires

1
votes

Supprimez le dossier «ProjectFolder / build» de votre projet. Assurez-vous d'avoir fermé Android Studio, sinon vous ne pourrez pas le supprimer.


0 commentaires

13
votes

Problèmes rencontrés lors de la mise à niveau vers le dernier studio Android 3.6.1

La suppression du cache, le nettoyage du projet et la suppression du dossier de construction n'ont pas résolu le problème.


Supprimez simplement l'apk généré par la compilation précédente.


0 commentaires

0
votes

J'ai reçu ce message d'erreur lors de la génération de l'APK signé.

Entry name res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml collided

Résolu le problème en supprimant l'APK existant. Solution assez étrange cependant.


0 commentaires

0
votes

Résolu:
Supprimez simplement le fichier apk précédent. C'est ça.
L'emplacement serait: YourProjectFolder / app / debug /


0 commentaires

2
votes

Cela a peut-être été exagéré mais je:

  1. Supprimer le dossier de projet / construction
  2. Supprimer le dossier de projet / application / construction
  3. Fichier> Invalider les caches / Redémarrer
  4. Projet propre

0 commentaires

2
votes

Cela est dû à des changements de configuration mis à jour dans le gradle.

Alors essayez simplement File -> File > Invalidate Caches / Restart

Ou supprimez les anciens fichiers APK de votre système


0 commentaires

2
votes

Je viens de supprimer tous les myProject\app\build\outputs\apk\debug APK de débogage dans le myProject\app\build\outputs\apk\debug et cela a fonctionné pour moi.


0 commentaires

8
votes

Ce problème est résolu en supprimant les APK générés par la version précédente existant dans les dossiers de version et de débogage.

Invalider le cache et reconstruire n'aiderait pas si vous n'avez pas supprimé les APK précédemment générés


0 commentaires

8
votes

Après la mise à jour vers Android Studio 4.1, j'ai rencontré des problèmes similaires, pour moi, c'était "entrée de nom 'classes.dex' en collision". Une erreur est survenue lors de la création de l'application à l'aide de l'option "Générer un bundle signé / APK".

La solution était simple: assurez-vous qu'Android Studio n'exécute pas l'application lors de la création (arrêtez de fonctionner, puis réessayez).


1 commentaires

Merci pour les conseils ;-) Pour moi, c'était juste que le téléphone était connecté



0
votes

essayez de nettoyer votre build et de le reconstruire, puis exécutez le projet ne fonctionnait toujours pas, puis procédez comme suit

Fichier-> Invalidate Cashes / restart-> Invalidate and restart

vous pouvez nettoyer votre build en

Construire-> Projet propre


0 commentaires

0
votes

Supprimez simplement l' app>build et build dossiers dans le project path du project path sur votre ordinateur!


0 commentaires

0
votes

Le problème est causé par la construction. La meilleure solution est de nettoyer et de reconstruire le projet. Continuez à construire et nettoyez le projet.


0 commentaires

0
votes

J'ai fait un cache et un redémarrage invalides et cela l'a corrigé.


0 commentaires