Je suis récemment passé à Android Studio 3
gradle plugin: 3.0.0-beta2
gradle: 4.1
Dans notre projet, nous utilisons: "react-native": "0.46.4" avec le plugin codepush.
Bâtiment:
gradlew assembleStagingDebug
fonctionne très bien, mais dès que j'essaie de construire la production:
gradlew assembleProductionRelease
Je reçois une erreur provoquée par des ressources créées par React dans la tâche processProductinoReleaseResources:
Issues:
- ERROR: /Users/user/react/Android/app/build/intermediates/res/merged/production/release/drawable-hdpi/node_modules_reactnavigation_src_views_assets_backicon.png uncompiled PNG file passed as argument. Must be compiled first into .flat file.
- ERROR: failed parsing overlays
at com.Android.builder.internal.aapt.v2.AaptV2Jni.buildException(AaptV2Jni.Java:154)
Dans ma conquête contre ce problème je l'ai essayé avec proguard invalidante comme:
buildTypes {
release {
debuggable true
minifyEnabled false
shrinkResources false
}
debug {
debuggable true
minifyEnabled false
println proguardFiles
}
}
Mais sans aucune chance.
Des idées? J'apprécierais également une explication du lieu où cette conversion .flat des ressources Android se produit, et pourquoi cela ne se produit pas pendant la tâche StagingDebug.
La solution de contournement présentée ici a finalement fonctionné pour moi. Mais le problème initial persiste, je pense.
mise à jour le 28.3.2018 Depuis la mise à jour Android Studio 3.1, je reçois ceci:
WARNING: The option 'Android.enableAapt2' is deprecated and should not be used anymore. Use 'Android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018
Étant donné que les problèmes sur la page de réaction sont fermés, je recherche des solutions de rechange avant qu’ils ne déprécient cette solution de contournement.
Dans votre fichier gradle.properties, ajoutez les lignes suivantes:
classpath 'com.Android.tools.build:gradle:3.0.0'
distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.Zip
Android.enableAapt2=false
Dans mon cas, ajouter Android.enableAapt2=false
à gradle.properties était suffisant pour résoudre ce problème.
J'ai rencontré un problème similaire dans mon application. Il est résolu par Allez dans le répertoire "Android" et lancez
gradlew clean
Dans mon cas, j'ai dû remplacer compile
par implementation
Modifier app/build.gradle
pour être:
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.Android.support:appcompat-v7:23.0.1"
implementation "com.facebook.react:react-native:+" // From node_modules
}