2013-01-23 15 views
9

Ich habe derzeit ein Problem mit Google Play-Filterung und der neuen Dichteklasse xxhpdi, die in API Level 16 eingeführt wurde. Meine App ist in 3 APK-Dateien aufgeteilt (ich weiß, dass das nicht das ist Best Practice, aber aufgrund einer schlechten Planung muss ich es im Moment so machen). Der interessante Teil ist die Version für Android 4.0, nur Smartphones. Ich habe Setup-Markt Filter in AndroidManifest.xml wie folgt aus:Android - Google Play ausfiltern xxhdpi

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17"/> 
<compatible-screens> 
    <screen android:screenDensity="ldpi" android:screenSize="small"/> 
    <screen android:screenDensity="mdpi" android:screenSize="small"/> 
    <screen android:screenDensity="hdpi" android:screenSize="small"/> 
    <screen android:screenDensity="xhdpi" android:screenSize="small"/> 

    <screen android:screenDensity="ldpi" android:screenSize="normal"/> 
    <screen android:screenDensity="mdpi" android:screenSize="normal"/> 
    <screen android:screenDensity="hdpi" android:screenSize="normal"/> 
    <screen android:screenDensity="xhdpi" android:screenSize="normal"/> 
</compatible-screens> 

Das Problem ist jetzt, dass neue Geräte mit 1080p-Bildschirme wie das HTC Droid DNA kann meine App nicht sehen oder installieren, weil ich nicht angeben dass es auch die xxhdpi-Bildschirme unterstützt. Das Problem ist, weil ich meine minSdkVersion auf API-Ebene festgelegt 14, der Android ICS ist, kann ich nicht einfach die Zeile:

<screen android:screenDensity="xxhdpi" android:screenSize="normal"/> 

Dies liegt daran, API-Ebene 14 nicht die xxhdpi Klasse kennen. Gibt es eine Lösung für mein Problem, ohne eine 4. separate APK-Datei erstellen zu müssen?

Vielen Dank.

+0

Um zu zitieren * Achtung: Normalerweise sollten Sie dieses Manifest-Element nicht verwenden. Durch die Verwendung dieses Elements kann die potenzielle Benutzerbasis für Ihre Anwendung drastisch reduziert werden, indem Benutzern nicht gestattet wird, Ihre Anwendung zu installieren, wenn sie ein Gerät mit einer Bildschirmkonfiguration haben, die Sie nicht aufgelistet haben. Sie sollten es nur als letzten Ausweg verwenden * von [Developer's SDK] (http://developer.android.com/guide/topics/manifest/compatible-screens-element.html) – t0mm13b

+0

xxhdpi ist nur in JB aufwärts AFAICT, in Kurz, du hast leider kein Glück. Am einfachsten wäre es, JB, API 20 oder 21, neu zu erstellen, dann sollte es das tun. – t0mm13b

+0

Helle, danke für die Antwort. Die App zielt bereits auf JB MR1, da dies API-Level 17 ist. API-Level 14 ist Android 4.0. – NiThDi

Antwort

24

fand ich die Lösung: Statt den Abschnitt

<screen android:screenDensity="xxhdpi" android:screenSize="normal"/> 

Linie auf die kompatibel-Bildschirme des Hinzufügens, scheint es, wie der numerische Wert ist so gut funktioniert:

<screen android:screenDensity="480" android:screenSize="normal"/> 
+0

Ja, das ist dasselbe mit tvdpi und 213 (was für das Nexus 7 relevant ist) und es hat nichts mit der API zu tun, auf die Sie abzielen, diese Konstanten fehlen überhaupt. Sie sollten Ihre Antwort akzeptieren. – brillenheini

+0

Ich habe versucht, den Wert von 480 anstelle von xxhdpi, und während die App ordnungsgemäß erfüllt, wenn es den Laden trifft, wird es nicht als kompatibel mit dem Galaxy S4 angezeigt. Trotz der neuesten Updates von Android kann ich immer noch nicht kompilieren - ich bekomme die Fehler wie oben beschrieben. – djbp

1

scheint es zu sein, ein offenes Problem in Bezug auf dieses Problem: code.google.com/p/android Es ist zum Kotzen, aber ich kann mir keine bessere Problemumgehung vorstellen.