web-dev-qa-db-fra.com

la commande gradlew assembleRelease dans Android natif ne génère pas l'app-release.apk

Je souhaite générer le fichier non signé app-release.apk sans le serveur react-packager. J'exécute les commandes suivantes pour cela.

cd react-native-project-dir 

bundle réactif natif --platform Android --dev false - entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res /

Après la commande suivante, je reçois le message d'erreur dans l'invite de commande suivante:

cd Android & & gradlew assemblerelease

app: processReleaseManifestessReleaseManifest

: app: processReleaseResources D:\ReactNativeProject\Android\app\build\intermediates\res\merged\release\drawable-mdpi-v4\image_background_unique_2.jpg: erreur: fichier en double . D:\ReactNativeProject\Android\app\build\intermediates\res\merged\release\drawable-mdpi\image_background_unique_2.jpg: l’original est ici. Le qualificatif de version peut être implicite . : app: processReleaseResources FAILED

ECHEC: La construction a échoué avec une exception.

  • Qu'est ce qui ne s'est pas bien passé: L'exécution a échoué pour la tâche ': app: processReleaseResources' . com.Android.ide.common.process.ProcessException: Impossible d'exécuter aapt

Et je ne parviens pas à générer le fichier app-release.apk sans comprendre pourquoi le fichier image_background_unique_2.jpg est ajouté deux fois dans des dossiers différents.

6
Mayuri Birajdar

J'essayais de générer un APK signé en suivant les étapes à partir de https://facebook.github.io/react-native/docs/signed-apk-Android.html pour générer un apk signé.

J'ai eu le même problème. A montré error: Duplicate file pour certaines de mes images lorsque j'ai exécuté ./gradlew assembleRelease. assembleRelease semble causer des problèmes avec les dossiers drawable-. J'ai supprimé tous les dossiers drawable- de /Android/app/src/main/res/. Ensuite, j'ai à nouveau lancé ./gradlew assembleRelease. Enfin, il a généré un APK signé à /Android/app/build/outputs/apk/.

8
Anish Unnikrishnan

Le problème est que la nouvelle version de react-native regroupe les actifs sous/app/build/intermediates/res/merged/release au lieu de app/src/main/res

Pour le résoudre, voici ce que j'ai fait

rm -rf Android/app/src/main/res/drawable-*

Maintenant, regroupez les actifs en utilisant cette commande:

react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/build/intermediates/res/merged/release/

Notez le --assets-dest mis à jour dans la commande ci-dessus. L'assemblage de l'APK a bien fonctionné par la suite!

react-native run-Android --variant=release

14
Indivision Dev

Avez-vous essayé une version native native? Essayez de réinitialiser le cache, puis regroupez. Peut-être que ça va résoudre ce problème.

0
Y_J

cela a fonctionné pour moi 

Ajoutez le code suivant dans le fichier node_modules/react-native/react.gradle:

doLast {
    def moveFunc = { resSuffix ->
        File originalDir = file("${resourcesDir}/drawable-${resSuffix}")
        if (originalDir.exists()) {
            File destDir = file("${resourcesDir}/drawable-${resSuffix}-v4")
            ant.move(file: originalDir, tofile: destDir)
        }
    }
    moveFunc.curry("ldpi").call()
    moveFunc.curry("mdpi").call()
    moveFunc.curry("hdpi").call()
    moveFunc.curry("xhdpi").call()
    moveFunc.curry("xxhdpi").call()
    moveFunc.curry("xxxhdpi").call()
}

dedans def currentBundleTask = tasks.create (...

a trouvé cette solution ici https://github.com/facebook/react-native/issues/5787

0
Adeojo Emmanuel IMM

J'ai réussi à résoudre ce problème en supprimant les doublons du dossier dans réagissent natif /Android/app/build/intermediates/res/merged/release/drawable-mdpi

0
sebastian gamboa

Commencez par supprimer tous les dossiers qui sont potentiellement à l'origine de cette erreur en tapant:

rm -rf ./Android/app/build/intermediates/res/merged/release/drawable-*

Puis changez mdpi en mdpi-v4 dans:

./node_modules/react-native/local-cli/bundle/assetPathUtils.js

function getAndroidAssetSuffix(scale) {
  switch (scale) {
    case 0.75: return 'ldpi';
    case 1: return 'mdpi-v4';
    case 1.5: return 'hdpi';
    case 2: return 'xhdpi';
    case 3: return 'xxhdpi';
    case 4: return 'xxxhdpi';
  }
}

Ensuite, regroupez vos éléments hors connexion:

react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/build/intermediates/res/merged/release/

Enfin, construisez la version de votre application:

cd ./Android && ./gradlew assembleRelease
0
Nicky Kouffeld

Il semble que vous ayez regroupé votre application et que vous l’ayez installée sur votre téléphone avec assembleDebug. Lorsque vous avez décidé de choisir assembleRelease, vous devez supprimer les dossiers drawable-. Ils créent en quelque sorte un problème lorsque vous décidez de produire un fichier .apk.

0
milkersarac