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