4 votes

Android Gradle 2.2 n'autorise pas ShrinkResources pour les APK signés

Dans le cadre du déploiement d'Android Studio 2.2, j'ai mis à jour mes outils de construction Gradle à la version 2.2. Après avoir fait cela, le processus de construction de mon APK signé échoue parce que j'ai shrinkResources = true.

Une fois que je suis revenu à Gradle v2.1.3 ou que j'ai défini shrinkResources = false, tout fonctionne bien. Voici le fichier de construction de mon application Gradle :

    android {
    signingConfigs {

    }
    compileSdkVersion 24
    buildToolsVersion '24.0.0'
    defaultConfig {
        applicationId "com.sample.testapp"
        minSdkVersion 21
        targetSdkVersion 24
        versionCode 4
        versionName "0.0.4"
    }
    buildTypes {
        release {
            minifyEnabled false
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFile 'C:/Users/code/testapp/app/proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

Avec Gradle réglé sur la version 2.2, voici l'erreur de construction que j'obtiens lorsque je génère un APK signé.

enter image description here

Quelqu'un sait-il pourquoi cela se produit et s'il existe un moyen de contourner le problème ? J'ai fait quelques recherches sur Google et j'ai vu quelques anciens rapports de bogues Android concernant des versions alpha et bêta de Gradle ayant ce problème, mais les rapports que j'ai trouvés dataient de plus de 6 mois (et concernaient des versions antérieures de Gradle).

P.S. Je sais que minifyEnabled = false actuellement, je dois encore rechercher le jeu correct de règles proguard pour mes bibliothèques incluses afin d'éviter que le Signed Build ne se trompe à cause de librairies manquantes.

7voto

Ivan Alburquerque Points 602

Pour utiliser shrinkResources vous devez utiliser minifyEnabled

Conformément à Documentation Android :

La réduction des ressources ne fonctionne que conjointement avec la réduction du code. Une fois que le rétrécisseur de code a supprimé tout le code inutilisé, le rétrécisseur de ressources peut identifier les ressources que l'application utilise encore. Ceci est particulièrement Ceci est particulièrement vrai lorsque vous ajoutez des bibliothèques de code qui incluent des ressources. supprimer le code inutilisé de la bibliothèque afin que les ressources de la bibliothèque deviennent ressources de la bibliothèque ne soient plus référencées et puissent donc être retirées par le rétrécisseur de ressources.

Pour activer le rétrécissement des ressources, définissez la propriété shrinkResources sur true. dans votre fichier build.gradle (à côté de minifyEnabled pour le code rétrécissement du code).

3voto

jiechic Points 31

Utiliser

minifyEnabled false
shrinkResources false

ou

minifyEnabled true
shrinkResources true

peut être un bug sur le plugin Android gradle

attendre que google corrige les bugs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X