Ich habe kürzlich eine Android-App im Laden veröffentlicht, die für fast alle meine Nutzer perfekt funktionierte. Jedoch habe ich kurz ein paar Absturzberichte pro Woche mit folgendem Trace bekommen:
%Vor%Es ist nicht einfach zu bestimmen, was genau hier vor sich geht. Das einzige, was ich aus den Benutzerberichten entnehmen konnte, war, dass es hauptsächlich auf Geräten mit Displays mit geringer Dichte vorkam. Diese spezifische Ressource wird als Hintergrund für eine Ansicht in einer XML-Benutzerschnittstelle verwendet.
Das Problem wird hier durch eine unglückliche Kombination aus der automatischen Skalierung von ausklappbaren Ressourcen in Android und sehr kleinen Zeichen verursacht.
Wenn Ihre App beispielsweise nur %code% Ressourcen zur Verfügung stellt, müssen sie verkleinert werden, damit sie auf Bildschirme niedrigerer Bildschirmdichte passen. Dies wird automatisch von Android durchgeführt, wenn Sie diese Ressourcen nicht selbst bereitstellen.
Die Skalierung der Anzeigedichte wird wie folgt eingestellt:
Dies bedeutet, dass Ihre %code% Ressourcen auf Displays mit mittlerer Dichte um einen Faktor von 2,0 herunterskaliert werden. Dies kann sich nachteilig auf die Qualität auswirken, weshalb in der Regel empfohlen wird, diese Ressourcen mit geringerer Dichte selbst zu erstellen und bereitzustellen.
Nun zurück zu dem Problem. Es ist nicht ganz ungewöhnlich, eine Ressource mit einer sehr kleinen Breite oder Höhe (1 oder 2 Pixel) zu haben. Ein Beispiel für einen Anwendungsfall ist die Bereitstellung eines einfarbigen Hintergrunds für eine Ansicht.
Wenn diese Ressourcen als %code% bereitgestellt und skaliert werden, kann die Pixelgröße leider auf 0 reduziert werden. Es gibt keinen Schutz dafür und Android kann keine Bitmap mit dieser Dimension und diesem Absturz erstellen.
Dafür gibt es mehrere Lösungen:
Die letzte Option beschreibt die Absicht am genauesten und ermöglicht Ihnen, die Farbe später ohne ein Bildbearbeitungsprogramm leicht zu ändern:
%Vor%Fügen Sie diese Ressource in den Ordner %code% ein und sie wird immer ordnungsgemäß funktionieren.