Réagir Android Native de fichiers en Double erreur lors de la génération apk
Quand je suis en train de générer android apk en utilisant ./gradlew installRelease
, j'obtiens cette erreur dans la console:
~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi-v4/src_resources_img_loading.gif: error: Duplicate file.
~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi/src_resources_img_loading.gif: Original is here. The version qualifier may be implied.
J'ai essayé Build->Clean Project
via Android Studio et a couru ./gradlew installRelease
de nouveau; il ne fonctionne pas non plus.
Aussi, j'ai essayé de supprimer le build
dossier, mais il n'aide pas non plus.
C'est une chose vraiment étrange, j'ai été confronté à de trop. L'une des solutions rapides est de supprimer drawable les ressources (ou juste aller quelque part à l'extérieur du répertoire du projet) et de reconstruire le projet.
Merci pour votre réponse, mais il ne fonctionne pas ici 😢
veuillez vérifier ma réponse à une double question: stackoverflow.com/a/54066718/427622
Merci pour votre réponse, mais il ne fonctionne pas ici 😢
veuillez vérifier ma réponse à une double question: stackoverflow.com/a/54066718/427622
OriginalL'auteur Shongsu | 2017-11-02
Vous devez vous connecter pour publier un commentaire.
Donner quelques conseils pour vous, j'espère que c'est le travail. (testé avec la "réagir": "16.2.0", "réagir indigènes": "0.54.2")
Personnalisé node_modules/réagir indigènes/réagir.gradle pour résoudre le Double erreur de fichier parfaitement. Ajouter le code suivant dans currentBundleTask'création de bloc (après doFirst bloc)
Vous pouvez créer un script pour le faire automatiquement.
android-réagir-gradle-fix
fichierandroid-release-gradle-fix.js
fichierMise à jour
package.json
fichier:"scripts": {
"postinstall": "nœud ./android-release-gradle-fix.js"
},
Que c'est! Exécuter
npm install
pour obtenir génial.Remarque: Si vous exécutez
npm install
ci, comme jenkins, vous pouvez obtenir l'erreur:postinstall: cannot run in wd %s %s (wd=%s) node
=> il suffit d'utilisernpm install --unsafe-perm
au lieuMerci beaucoup..vous avez sauvé mon cul. Bien que j'ai une question, dois-je insérer ce code à chaque fois après l'exécution de npm install, Est-ce une bonne idée de modifier gradle de node_modules? je doute sérieusement qu'il
la réponse a été mis à jour.
C'est dans réagissent-natif (je suis sur la version 0.56.0) mais j'ai toujours cette erreur. Je commence à devenir fou, c'est le blocage de moi depuis bien trop longtemps maintenant.
cela n'a pas fonctionné pour moi, la suppression de fichiers dans
drawable
fait.OriginalL'auteur Nhan Cao
Supprimer les fichiers que vous pourriez avoir sur:
Exécution de Construire à nouveau, Cela a réglé le problème pour moi.
res/
dossier et il sauvegardés. Ensuite, j'ai seulement ajoutémipmap/ic_launcher.png
etvalues/
avecstrings.xml
etstyles.xml
. Maintenant, cela fonctionne enfin après le plus frustrant, d'un jour et demi cette année.ses œuvres parfait pour moi... je suis la résolution d'une durée d'un jour.. thnx beaucoup
Merci, qu'il fixe pour moi. J'ai l'habitude de ne construire à partir de la ligne de commande, et lors de l'ouverture du projet dans Android Studio, je n'avais pas remarqué qu'il a créé ces répertoires et ainsi de dupliquer les ressources.
OriginalL'auteur MOSTRO
Au moment de la rédaction, les versions les plus récentes de Réagir Natif (>0.57.0) ont augmenté la Gradle wrapper niveau de 4,4 et Gradle plugin pour 3.1.4, comme indiqué par la changelog. Cela a pour effet de rendre le processus de build Gradle stocker les résultats de AAPT, qui sont maintenant nécessaire, dans un autre répertoire que précédemment.
En termes de Nhan Cao's génial solution de contournement, nous avons besoin de faire une légère modification pour empêcher la duplication des ressources collisions, car il a l'air d'être signalé à l'ancien répertoire et non pas de l'app
generated
répertoire. En changeant le répertoire cible où ces fichiers en double sont fusionnées après les ressources ont été générés, on peut encore dedup les ressources.L'existant
react.gradle
désigne le chemin d'accès ci-dessous:Le double de chemins de fichier peuvent apparaître entre:
Comme une solution de contournement, nous pouvons mettre à jour Nhan de la solution comme suit (assurez-vous d'inclure cela dans le
currentBundleTask
après la déclaration dedoFirst
dansreact.gradle
:OriginalL'auteur Mapsy
Ne pas exécuter
react-native bundle
avant./gradlew assembleRelease
.Pour moi-même, je courais
react-native bundle
avant l'exécution de./gradlew assembleRelease
.J'ai été faire un semblable double message d'erreur avec un de mes actifs.
À la recherche à la
./gradlew assembleRelease
sortie, je pourrais dire qu'il s'inspire de la JS bundle par lui-même (grâce àapply from: "../node_modules/react-native/react.gradle"
dans votrebuild.gradle
fichier) de sorte qu'il n'était pas nécessaire d'exécuter manuellementreact-native bundle
avant de la main.Si je n'avais tout simplement pas exécuter
react-native bundle
avant d'exécuter./gradlew assembleRelease
tout fonctionnait très bien.J'ai testé la Version de l'APK et le JS bundle charge très bien, y compris toutes les images.
Ma seule préoccupation est de savoir si la source des cartes
--sourcemap-output
(pour Bugsnag) sera créé. Si non, je suis sûr qu'il y a un moyen d'avoir./gradlew assembleRelease
générer de ceux aussi bien. J'ai juste pas encore testé.OriginalL'auteur Joshua Pinter
Pour moi, il travail pour supprimer le dossier:
android/build
et exécuter./gradlew assembleRelease
de nouveau.OriginalL'auteur suther
Afin d'obtenir mon build de travail pour Réagir Natif 0.57.5, j'ai utilisé Mapsy's réponse avec une mineure d'amélioration. J'avais besoin d'être en mesure de construire pour de multiples saveurs et en général j'essaie d'éviter de coder en dur les choses. Lors de la recherche par le biais de mon
react.gradle
fichier, je l'ai trouvé a la suite de variable défini:Ainsi, au lieu de coder en dur le type de build/saveur dans le chemin comme ceci:
J'ai plutôt utilisé le
resourcesDir
variable pour définir laoriginalDir
chemin comme ceci:Comme un résultat, mon
doLast
ressemble à ceci:OriginalL'auteur WadeStar
Un moyen de supprimer l'erreur serait de:
Cependant, ce n'est pas une solution idéale, car chaque image aura seulement une résolution pour toutes les tailles de périphériques. Pour les images qui sont trop grands pour un périphérique, il laisse la désagrégation de l'appareil et le conduit à la taille de téléchargement et la vitesse de questions, et pour les images trop petites pour un périphérique, il conduit à une réduction de la qualité de l'image.
Un seul solution que j'ai trouvé est d'utiliser un Android Studio plugin appelé Android Drawable Importateur. Pour l'utiliser après qu'il est installé:
Le plugin va gérer la génération de la drawable dossiers et de corriger les tailles d'image. Une fois que vous avez importé votre image, vous devriez être en mesure d'exécuter Gradle est assembleRelease sans les ressources en double erreur.
OriginalL'auteur Richard Lovell