web-dev-qa-db-fra.com

React Native Android Release Build Failing - Gradle

J'ai un projet assez compliqué dont certains sont du code plus ancien de la dernière année environ qui en React temps natif est éternel. . - J’ai bricolé les réponses d’autres endroits pour arriver aussi loin que je l'ai, mais je ne sais pas comment passer ce dernier morceau.

Je reçois toujours une erreur de regroupement où aapt échouera car il ne regroupe pas correctement les ressources.

Exemple de code d'erreur:

> Task :app:bundleReleaseJsAndAssets 
Scanning folders for symlinks in /media/user/1546c7ef-f386-4baa-90d5-cbd87092d3e31/home/user/Code/React-Native/timesavr/node_modules (9ms)
Scanning folders for symlinks in /media/user/1546c7ef-f386-4baa-90d5-cbd87092d3e31/home/user/Code/React-Native/timesavr/node_modules (6ms)
warning: the transform cache was reset.
Loading dependency graph, done.
bundle: Writing bundle output to: /media/user/1546c7ef-f386-4baa-90d5-cbd87092d3e31/home/user/Code/React-Native/timesavr/Android/app/build/intermediates/assets/release/index.Android.bundle
bundle: Done writing bundle output

error: resource Android:style/TextAppearance.Material.Widget.Button.Borderless.Colored not found.
error: resource Android:style/TextAppearance.Material.Widget.Button.Colored not found.
/home/user/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.2.aar/28fa7b5f2db0b5e014559f7cf36ab4c7/res/values-v26/values-v26.xml:9:5-12:13: AAPT: error: resource Android:attr/colorError not found.

/home/user/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.2.aar/28fa7b5f2db0b5e014559f7cf36ab4c7/res/values-v26/values-v26.xml:13:5-16:13: AAPT: error: resource Android:attr/colorError not found.

/home/user/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.2.aar/28fa7b5f2db0b5e014559f7cf36ab4c7/res/values-v26/values-v26.xml:17:5-93: AAPT: error: style attribute 'Android:attr/keyboardNavigationCluster' not found.

error: failed linking references.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-image-resizer:verifyReleaseResources'.
> com.Android.ide.common.process.ProcessException: Failed to execute aapt
9
GenericJam

La façon de résoudre ce problème qui a fonctionné pour moi est de plonger dans le code node_modules pour les bibliothèques de support qui déclenchent l'erreur.

Vous devrez aller dans node_modules/project-name/Android/build.gradle et changer cela

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    ...
}

quelle que soit la version sdk dans votre /Android/app/build.gradle. Par exemple:

Android {
    compileSdkVersion 27
    buildToolsVersion "27.0.1"
    ...
}

Espérons que cela sera corrigé dans React Native donc cette solution de contournement n'est pas nécessaire.

Edit: Je pense que la solution de Petter est la meilleure, même si je ne l'ai pas essayée moi-même. Essayez probablement celui-là en premier et si cela ne fonctionne pas, essayez ceci ensuite.

17
GenericJam

En vous basant sur la réponse de Generic Jam, vous pouvez le faire par programme pour toutes les sous-bibliothèques en faisant quelque chose comme ceci dans votre fichier de projet build.gradle:

subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('Android') || subproject.plugins.hasPlugin('Android-library'))) {
            Android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}
25
Petter