web-dev-qa-db-fra.com

Problèmes liés aux ressources générées par react dans Android Studio 3

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.

16
Mike T

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
18
user7532779

Dans mon cas, ajouter Android.enableAapt2=false à gradle.properties était suffisant pour résoudre ce problème.

4
user1791914

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
0
Vipul

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
}
0
azwar_akbar