Je travaille sur une application Android depuis environ 2 mois. Presque chaque fois que j'ai créé un dessin personnalisé lorsque j'ai essayé de créer un projet, j'ai obtenu une erreur de liaison de ressources Android et après cela, le nom des dessinables qui n'ont pas pu être localisés par Android Studio.
Ma solution était que j'ai déplacé ces drawables quelque part hors de mon projet et reconstruit l'application après avoir obtenu une erreur.J'ai déplacé à nouveau les drawables vers mon projet et lorsque je reconstruisais mon APK
il n'y avait plus d'erreur et je pouvais créer, exécuter, même générer des APK
et ces drawables fonctionnaient parfaitement bien. Mais maintenant que mon projet est terminé, je veux générer un apk signé, mais il n'y a aucun moyen de me débarrasser de l'erreur d'échec de liaison des ressources Android. J'ai mis certains de mes codes drawables ci-dessous.
retry_btn.xml
:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 28 defaultConfig { applicationId "uk.MyAppName.www.MyAppName" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { // minifyEnabled false // proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } productFlavors { } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:exifinterface:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:design:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:cardview-v7:28.0.0' implementation 'org.jetbrains.anko:anko-commons:0.10.4' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.google.android.exoplayer:exoplayer:2.9.1' }
story_box.xml
:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="#333333" /> <solid android:color="#EEEEEE" /> </shape> </item> </layer-list>
table_border.xml
:
<?xml version="1.0" encoding="utf-8"?> <shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:color="#70707070" android:width="1dp"/> </shape>
Tous les drawables sont disponibles dans mon projet mais j'obtiens cette sortie lorsque j'essaye de générer un apk signé:
La liaison des ressources Android a échoué
Sortie: C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ activity_main.xml: 51: error: resource drawable / search (aka uk.MyAppName.www.MyAppName: drawable / search) non a trouvé.
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ activity_movie.xml: 234: erreur: ressource drawable / story_box (alias uk.MyAppName.www.MyAppName: drawable / story_box) introuvable.
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ activity_no_internet.xml: 49: error: resource drawable / retry_btn (aka uk.MyAppName.www.MyAppName: drawable / retry_btn) not found.
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ activity_register.xml: 205: erreur: ressource drawable / register_btn (aka uk.MyAppName.www.MyAppName: drawable / register_btn) introuvable.
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ activity_register.xml: 215: error: resource drawable / register_btn (aka uk.MyAppName.www.MyAppName: drawable / register_btn) not found.
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ activity_search.xml: 39: erreur: ressource drawable / search (aka uk.MyAppName.www.MyAppName: drawable / search) non trouvée.
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ search_table_item.xml: 2: erreur: ressource drawable / table_border (aka uk.MyAppName.www.MyAppName: drawable / table_border) introuvable.
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ src \ main \ res \ layout \ table_item.xml: 2: error: resource drawable / table_border (aka uk.MyAppName.www.MyAppName: drawable / table_border) introuvable.
erreur: échec de la liaison des ressources du fichier.Commande: C: \ Users \ MyUser.gradle \ caches \ transforms-1 \ files-1.1 \ aapt2-3.2.1-4818971-windows.jar \ ac5e520165d725772f5386c054776ce5 \ aapt2-3.2.1-4818971-windows \ aapt2.exe link - JE\
C: \ Users \ MyUser \ AppData \ Local \ Android \ Sdk \ plates-formes \ android-28 \ android.jar \
--manifeste\
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ build \ intermediates \ merged_manifests \ release \ processReleaseManifest \ merged \ AndroidManifest.xml \
-o \
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ build \ intermediates \ processing_res \ release \ processReleaseResources \ out \ resources-release.ap_ \
-R \
@C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ build \ intermediates \ incremental \ processReleaseResources \ resources-list-for-resources-release.ap_.txt \
--auto-ajout-superposition \
--Java\
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ build \ generated \ not_namespaced_r_class_sources \ release \ processReleaseResources \ r \
--proguard \
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ build \ intermediates \ proguard-rules \ release \ aapt_rules.txt \
- package-personnalisé \
uk.MyAppName.www.MyAppName \
-0 \
apk \
--output-text-symboles \
C: \ Users \ MyUser \ AndroidStudioProjects \ MyAppName \ app \ build \ intermediates \ symboles \ release \ R.txt \
--no-version-vecteurs
Démon: AAPT2 aapt2-3.2.1-4818971-windows Daemon # 0
ceci est mon fichier gradle:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/register_btn_disabled"/> <item android:state_pressed="true" android:drawable="@drawable/register_btn_clicked"/> <item android:state_pressed="false" android:drawable="@drawable/register_btn_normal"/> <item android:drawable="@drawable/register_btn_normal"/> </selector>
9 Réponses :
recherchez votre fichier gradel et assurez-vous que l'ID de l'application est le même que le package du fichier mainfest dans l'attribut package
Vérifié et corrigé mais cela n'a malheureusement pas aidé
Supprimez shrinkResources
si vous l'utilisez dans un fichier gradle. Cela peut également arriver lorsque proguard
été activé
shrinkResources n'est pas utilisé ... proguard commenté dans le fichier gradle ne fonctionne pas ... Je peux générer un apk normal mais je ne peux pas générer un apk signé.
Voici. Fichier Gradle ajouté
À tous ceux qui sont confrontés à ce problème, changez simplement votre dossier drawable en drawable-v (votre version sdk), espérons que cette réponse résoudra vos problèmes. Ou ajoutez un autre répertoire dessinable avec le nom mentionné et copiez simplement vos fichiers dessinables là-bas.
Quelque chose qui a fonctionné pour moi avec un problème similaire a été de supprimer la référence à l'ID du dessinable, puis d'utiliser la saisie semi-automatique d'Android Studio pour le restaurer.
cela ressemble à une erreur similaire que j'ai rencontrée
l'utilisation de l'outil Analyse -> inspect code ...
montré l'erreur dans le journal
veuillez regarder ici pour une explication complète
si vous créez une version de votre application, assurez-vous que les fichiers res
qui sont dits not found
sont pas dans le dossier de debug
, vous pouvez le vérifier en ouvrant vos fichiers selon la vue Project
au lieu de la vue Android
J'ai rencontré le même problème: créez simplement un nouveau dossier dessinable avec votre version SDK comme (drawable-24) et collez-y vos dessinables et reconstruisez le projet.
Fonctionne comme un charme :)
Pour moi, le problème se pose lors de l'insertion d'un nouvel élément Image Vector à partir de la bibliothèque Android.
C'était un atout que j'avais déjà dans mon dossier: une icône de sauvegarde, donc je l'ai nommé différemment.
J'ai l'habitude d'avoir des valeurs standard pour tous mes actifs, donc je ctrl + C, ctrl + V ces valeurs sur le nouvel actif créé, elles n'incluent que la couleur et la taille, quelque chose comme ceci:
xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:tint="#718792" android:viewportWidth="24.0" android:viewportHeight="24.0"
Je laisse toujours le chemin intact.
Après avoir supprimé cet élément, tout est revenu à la normale.
Exemple de la façon dont on ne devrait jamais aller à plein régime en écrivant du code sans tester chaque ligne insérée (un peu comme la réponse pavlovienne à ctrl + G dans AutoCad pour ceux qui le connaissent), ... je n'exagère même pas.
Dans mon cas, dans le xml, il utilisait "@android:drawable/"
au lieu de "@drawable/"
. Le passage à "@drawable/"
permis à Android Studio de trouver mon fichier.