2013-03-21 17 views
23

Publikuję swoją aplikację w Sklepie Play i nie chcę, aby była dostępna dla tabletów. Jak mogę to zrobić?Uczyń aplikację na Androida niedostępną dla tabletów

Nie chcę ręcznie wykluczać każdego tabletu w konsoli programisty Androida, ale naprawdę potrzebuję, aby moja aplikacja działała wyłącznie na smartfonie.

EDIT: Zrobiłem jak zasugerował ale oto wynik:

enter image description here

A dla wyjaśnienia: Potrzebuję mojej aplikacji do uruchomienia na urządzeniach, które normalni ludzie nazywają smartphone a nie na urządzeniach, które normalnie ludzie nazywają tablety ... np to musi działać na "Galaxy Note 2", ale nie na "Galaxy Tab"

SOLVED Dzięki @CommonsWare:

musiałem ustawić następujące tagi w moim manifeście:

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="9"/> 

oraz:

<compatible-screens> 
    <!-- all small size screens --> 
    <screen android:screenSize="small" android:screenDensity="ldpi" /> 
    <screen android:screenSize="small" android:screenDensity="mdpi" /> 
    <screen android:screenSize="small" android:screenDensity="hdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
    <!-- all normal size screens --> 
    <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
    <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
    <!-- all large size screens --> 
    <screen android:screenSize="large" android:screenDensity="ldpi" /> 
    <screen android:screenSize="large" android:screenDensity="mdpi" /> 
    <screen android:screenSize="large" android:screenDensity="hdpi" /> 
    <screen android:screenSize="large" android:screenDensity="xhdpi" /> 
</compatible-screens> 

i wykonaj następujące czynności: prawym przyciskiem myszy na projekcie -> właściwości -> android -> wybrać cel wielki er niż 8

+5

dlaczego tak jest? (również, proszę zdefiniuj "tablet") – njzk2

+2

Jeśli powodem jest to, że aplikacja wymaga dostępu do połączeń głosowych, pamiętaj, że niektóre tablety mogą obsługiwać połączenia głosowe (np. mam ViewSonic ViewPad 7 ", który jest w zasadzie zwykłym telefonem) – Jules

+1

Jeśli nie chcesz, aby tablety były dołączone, zastanawiam się, dlaczego napisałeś również elementy .? –

Odpowiedz

24

http://developer.android.com/guide/practices/screens-distribution.html#FilteringHansetApps

... można użyć elementu do zarządzania dystrybucją aplikacji w oparciu o kombinacje rozmiaru ekranu i gęstości. Usługi zewnętrzne, takie jak Google Play, wykorzystują te informacje, aby zastosować filtrowanie do aplikacji, dzięki czemu tylko aplikacje z konfiguracją ekranu, za pomocą której deklarujesz zgodność, mogą pobrać Twoją aplikację.

Próbka <compatible-screens> pierwiastek z tej strony:

<manifest ... > 
    <compatible-screens> 
     <!-- all small size screens --> 
     <screen android:screenSize="small" android:screenDensity="ldpi" /> 
     <screen android:screenSize="small" android:screenDensity="mdpi" /> 
     <screen android:screenSize="small" android:screenDensity="hdpi" /> 
     <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
     <!-- all normal size screens --> 
     <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
     <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
     <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
     <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
    </compatible-screens> 
    ... 
    <application ... > 
     ... 
    <application> 
</manifest> 

Jednakże, że zalecane również linie dodawanie do gęstości xxhdpi, że takie urządzenia są dostarczane jest (Droid DNA, Xperia Z HTC Butterfly itp.).


UPDATE

Po pierwsze, w odniesieniu do swoich błędów budować, jeśli czytasz the documentation for the <compatible-screens> element, można zauważyć, że dodano API poziom 9, a dla jakiegoś dziwnego powodu, można zbudować docelowy jest starsze niż to.

Po drugie, w odniesieniu do:

muszę mojej aplikacji do uruchomienia na urządzeniach, które normalni ludzie nazywają smartfon, a nie na urządzeniach, które normalni ludzie nazywają ... np tabletek musi działać na "Galaxy Note 2", ale nie na "Galaxy Tab"

Nie jest to możliwe, ponieważ nie masz konkretnej definicji tego, co robisz i nie chcesz, aby Twoja aplikacja była wysyłana.

Na świecie istnieją ~ 8 miliardów "normalnych ludzi". Zapraszamy do rozmowy z każdym z nich i zapytać ich, co uważają, że Galaxy Note 2 jest. Niektórzy powiedzą telefon. Niektórzy powiedzą tablet. Niektórzy powiedzą "phablet", co nie będzie przydatne. Niektórzy wypędzą was z domów, twierdząc, że przynieśliście do nich jakiegoś emitującego światło demona (to też nie przyda się i może być bolesne, jeśli mają kamienie do rzucenia).

Jeśli w pewnym momencie w przyszłości wymyślisz naukową definicję tego, co robisz i nie chcesz wysyłać urządzenia, zadaj nowe pytanie dotyczące StackOverflow. Przez "definicję naukową" mam na myśli algorytm, który może być powszechnie stosowany przez wszystkie osoby na wszystkich urządzeniach, aby określić, co robisz i czego nie chcesz używać.

(zauważ, że przez „wszystkich ludzi”, jestem z wyłączeniem tych, którzy mogą uznać cię za demon-monger)

Na przykład:

  • „Chcę wysyłać na wszystkich urządzeniach które mają zdolność telefonii, niezależnie od wielkości ekranu „

  • ” Chcę wysyłać na wszystkich urządzeniach, które mają mniejszy rozmiar ekranu, niż taki a tyle cali na jego najkrótszego boku:

+1

Próbowałem twojej odpowiedzi, ale to dało mi błędy! – aveschini

+0

@aveschini: Zobacz aktualizacje do mojej odpowiedzi. – CommonsWare

+0

Masz rację (i otrzymałeś bardzo zabawną odpowiedź.) Uczciwy!). Muszę wysyłać na urządzeniach mniejszych niż 6 cali. Teraz mam: Ale nadal daje mi te same błędy, co na obrazie, który napisałem! – aveschini

7

Użyj tagu ekranu pomocy technicznej w pliku manifestu to niewłaściwa metoda. Zawsze używaj kodu <compatible-screens>, aby Twoja aplikacja była niedostępna na tablecie.

<supports-screens 
    android:smallScreens="true" 
    android:normalScreens="true" 
    android:largeScreens="false" 
    android:xlargeScreens="false" 
    android:resizeable="false" /> 

Uwaga

Jeśli używasz elementu dla powyższego scenariusza (gdy aplikacja nie jest kompatybilna z większych ekranów) i ustawić większy rozmiar ekranu atrybutów „false” następnie usługi zewnętrzne , takie jak Google Play, nie stosują filtrowania. Twoja aplikacja będzie nadal dostępna dla większych ekranów, ale po uruchomieniu nie będzie zmieniać rozmiaru, aby dopasować ją do ekranu. Zamiast tego system będzie emulował rozmiar ekranu słuchawki (około 320p. X 480dp, zobacz Tryb zgodności ekranu dla więcej informacji na temat trybu zgodności ekranu ). Jeśli chcesz zapobiec pobraniu aplikacji na numer pobranej na większe ekrany, użyj polecenia zaproponowanego przez @CommonsWare.

Użyj tagu, by wykluczyć aplikację na tablecie.

<compatible-screens> 
<!-- all small size screens --> 

    <screen android:screenSize="small" android:screenDensity="ldpi" /> 
    <screen android:screenSize="small" android:screenDensity="mdpi" /> 
    <screen android:screenSize="small" android:screenDensity="hdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xhdpi" /> 

    <!-- all normal size screens --> 

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

</compatible-screens> 
+1

To nie zadziała. Android nadal będzie wysyłać aplikację na urządzenia z większym ekranem i będzie zastosuj własny algorytm, aby skalować interfejs użytkownika. – CommonsWare

+0

Jak stwierdzono w innym wątku, to rozwiązanie zależy od definicji "tabletu", co może nie być tym, czego chce aveschini. – tilpner

+0

@CommonsWare Dzięki za cenne sugestie. –

-1

Możesz spróbować dodać coś w rodzaju usługi 3g lub 4g. Wykluczy to większość, ale prawdopodobnie nie wszystkie tablety.

Powiązane problemy