Vecteur d'un drawable drapeau n'a pas de travail sur le Soutien de la Bibliothèque 24+
Aujourd'hui, il semble que Android Nougat a été publié. Donc, je suis plus excité que jamais d'optimiser mon application pour les nouvelles fonctionnalités, comme la division de l'écran. Je voudrais pousser une version de mon application qui cible la version du SDK 24
de sorte que les utilisateurs ne sont pas informés du fait que mon application ne peut pas travailler en split-screen. Toutefois, cela signifie que je dois aussi mettre à jour vers la version 24
de la Bibliothèque de prise en charge. Comme beaucoup d'autres, j'ai rencontré un problème lors de la mise à jour vers la version 23.2.0
de la Bibliothèque de prise en charge. Cependant, j'ai suivi cette réponse et il a fixé mon problème. Maintenant la question est de retour à partir de la version 24.0.0
et de la Bibliothèque de prise en charge. Dans tous mes tests, je suis en utilisant le gradle drapeau décrit dans la réponse:
vectorDrawables.useSupportLibrary = true
Il est également important de noter que ce n'est qu'il se passe sur le pré-Lolliop périphériques (Kitkat et ci-dessous). Sucette et fonctionne parfaitement. Lorsque vous utilisez les dépendances suivantes, le drapeau fonctionne très bien:
compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:cardview-v7:23.4.0'
Mais lors de l'utilisation de ces dépendances, je reçois un accident similaire à celui que j'ai eu avant d'utiliser le drapeau:
compile 'com.android.support:support-v4:24.2.0'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
compile 'com.android.support:cardview-v7:24.2.0'
Ici est la trace de la pile de l'incident:
FATAL EXCEPTION: main
Process: com.badon.brigham.time, PID: 2070
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.badon.brigham.time/com.badon.brigham.time.MainActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f02004f
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f02004f
at android.content.res.Resources.loadDrawable(Resources.java:2101)
at android.content.res.Resources.getDrawable(Resources.java:700)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:346)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:194)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:182)
at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:717)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:187)
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:77)
at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:127)
at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:147)
at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:27)
at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:50)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:181)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:521)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
...
Suis-je totalement raté quelque chose? Ou est-ce déjà un problème connu (je n'ai rien trouvé sur Google)? Toute aide serait appréciée.
- Qui ressemble à la ressource ne pouvait pas être trouvé, assurez-vous qu'il est dans le bon dossier
- Est-ce qui se passe dans la version de Débogage de l'application, ou seulement dans une Version?
- C'est en fait une ressource qui ne peut être trouvée à l'intérieur de la Bibliothèque de prise en charge. Il a à faire avec le nouveau vecteur des capacités pour la pré-Sucette appareils. Plus d'infos Ici
- Je vais avoir ce problème dans la version de Débogage de l'application - permettez-moi de voir sur la version finale.
- Yup, relâchez trop.
Vous devez vous connecter pour publier un commentaire.
Pouah... je déteste quand cela se produit. Vous posez une question et que la réponse vous-même quelques heures plus tard. De toute façon, il semble que j'ai été en utilisant la vétusté des outils de construction de version. Tout ce que j'avais à faire était de changer une ligne dans mon gradle:
compileSdkVersion
était de 25, maisbuildToolsVersion
était 21.1.2. Je corrige à25.0.1
et travaillécompileSdkVersion
,buildToolsVersion
, et la bibliothèque de prise en charge des versions doivent tous être sur le même numéro de version majeure (tout commence avec le même numéro majeur, comme 24, par exemple).En plus de la Gradle de configuration, pour moi, le truc, c'était d'ajouter cette ligne au sein de l'activité onCreate():
Votre construire.gradle (projet) si vous utilisez la version 2.0+ ajouter le code ci-dessous dans votre construire.gradle (app)
et, si vous utilisez la version 1.5 ajoute ci-dessous dans votre construire.gradle (app)
et, bien sûr, dans la mise en page des fichiers, vous devez utiliser srcCompat attribut:
Dans 24.2.0 la v4 Bibliothèque de prise en charge a été divisée par google en plusieurs modules:
Assure la compatibilité des wrappers pour nouveau cadre Api, tel que le Contexte.getDrawable() et la Vue.performAccessibilityAction().
Fournit un certain nombre de classes d'utilitaires, tels que AsyncTaskLoader et PermissionChecker.
Met en œuvre une variété de l'INTERFACE utilisateur de composants connexes, tels que ViewPager, NestedScrollView, et ExploreByTouchHelper.
Backports portions du régime juridique de la presse, y compris MediaBrowser et MediaSession.
Backports le fragment cadre. Ce module a des dépendances sur le soutien-compat, soutien-core-utils, soutien-core-l'interface utilisateur, et le soutien-médias-compat.
Vous pouvez voir tous les changements ici
com.android.support:support-v4:24.2.0
de notre gradle fichier et ajoutez le 6 liste des dépendances au-dessus de nous serait techniquement obtenir toutes les mêmes fonctionnalités?Donc la réponse à ce problème est de rappeler Android responsables qu'ils ont laissé tomber la balle et de leur demander de fixer leurs bibliothèques.
Le fichier
abc_vector_text.xml
est absent du projet à l'exécution, mais le fichier manquant ne sera pas marqué dans la construction si votre projet n'est pas de l'utiliser en premier lieu. Le nom du fichier indique c'est juste de la part de certains de la suite de tests.Je suis à l'aide de la dépendance suivant:
compile 'com.android.support:appcompat-v7:25.0.1'
Car cette page indique que le fichier est trouvé dans la bibliothèque:
https://github.com/dandar3/android-support-v7-appcompat/blob/master/res/drawable/abc_vector_test.xml
.et pourtant, je vois encore l'erreur à l'exécution.
Avis c'est un github lien d'un projet qui n'est pas l'officiel du projet Android. Je n'arrive pas à trouver le fichier dans le projet officiel de construire n'importe où. Ce qui, encore une fois, que c'est juste un problème de sloppy d'entretien. Voici mon stacktrace de comparaison:
J'ai eu le même problème avec dexguard.
Ajoutez cette ligne à votre fichier de configuration:
pour moi, c'était le vieux outils de génération de papier d'emballage dans la racine du projet de construction.gradle fichier
au lieu de