Mon thème s'étendre à partir de Theme.MaterialComponents
? Ah oui en effet, et ce depuis que j'ai commencé à utiliser le nouveau Matériel des éléments d'INTERFACE utilisateur.
Si toutes les réponses ici sont inutiles pour vous, car ils étaient à moi, préparez-vous: L' This component requires that you specify a valid android:textAppearance attribute
d'erreur peut être liée à une bibliothèque externe précisant android:theme
avec le même nom que le thème que vous utilisez, et Android au hasard de décider lequel utiliser en fonction de votre build.gradle. Dans mon cas, le coupable était à l'intérieur de Mobile FFmpeg.
J'ai commencé à rencontrer cette erreur après avoir travaillé pendant une semaine, alors que la construction de la variante a été défini à un autre produit de la saveur et puis en revenant de l'original. Ce qui a changé entre-temps? Après enquête approfondie, j'ai trouvé le build cassé après j'ai divisé implementation 'com.arthenica:mobile-ffmpeg-min:4.2.2.LTS'
en deux, pour chaque produit de la saveur où j'ai réellement l'utiliser comme ceci:
videoImplementation 'com.arthenica:mobile-ffmpeg-min:4.2.2.LTS'
mainImplementation 'com.arthenica:mobile-ffmpeg-min:4.2.2.LTS'
Ce fut suffisant pour déclencher This component requires that you specify a valid android:textAppearance attribute
pour la saveur main
, tout fonctionne bien pour la saveur video
. Chaque main
construire écrasé parce que mon application, le thème est nommé AppTheme
et le Mobile FFmpeg manifeste également spécifie android:theme="@style/AppTheme"
(ce qui affecte toutes les versions jusqu'à 4.2.2). J'ai donc renommé mon thème, mais qui a entraîné une erreur de construction très similaire à celui ici:
https://github.com/tanersener/mobile-ffmpeg/issues/206
Attribute application@theme value=(@style/ScryptedTheme) from AndroidManifest.xml:37:9-45
is also present at [com.arthenica:mobile-ffmpeg-https:4.2.LTS] AndroidManifest.xml:17:9-40 value=(@style/AppTheme).
Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest.xml:31:5-95:19 to override.
Après l'ajout dit - tools:replace="android:theme"
, tout fonctionnait à nouveau, et l'original MaterialComponents erreur a disparu.
Mais pourquoi est-il OK pour une saveur et pas OK pour les autres? Absolument aucune idée. Le crédit va à Google tendance à ajouter de la plus folle des bugs à "stable" communiqués. Au moins, il est possible de résoudre très facilement avec quelques refactoring.
TL;DR
C'est la question: https://github.com/tanersener/mobile-ffmpeg/issues/206
En collaboration avec le fait que, lorsque les deux ont fusionné manifeste de spécifier des thèmes différents avec le même nom, Android va choisir un au hasard en fonction du contenu de votre build.gradle
.
Solution: Ajouter un tools:replace="android:theme"
de votre manifeste <application>
balise et de changer le nom de votre thème.