2011-08-08 36 views
15

Estoy haciendo aplicaciones para teléfonos, pero quiero que se puedan usar en tabletas. No sé por qué no puedo. Yo uso este en mi archivo de manifiesto de Android:No se puede usar android: xlargeScreens = "true"?

android:xlargeScreens="true" 

consigo este error:

de error: No se identificador de recursos encontrado para el atributo 'xlargeScreens' en el paquete 'androide'

Este es mi archivo manifiesto:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="cro.perger.bonbon" 
     android:versionCode="5" 
     android:versionName="1.4"> 
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".bonbon" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

      <!-- Broadcast Receiver that will process AppWidget updates --> 
     <receiver android:name=".HelloWidget" android:label="@string/w_name"> 
      <intent-filter> 
       <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
       </intent-filter> 
     <meta-data android:name="android.appwidget.provider" 
      android:resource="@xml/hello_widget_provider" /> 
     </receiver> 

     <receiver android:name=".SMSReceiver"> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver>  

     </application> 
     <supports-screens android:resizeable="true" 
         android:smallScreens="true" 
         android:normalScreens="true" 
         android:largeScreens="true" 
         android:xlargeScreens="true" 
         android:anyDensity="true"/> 
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    <uses-permission android:name="android.permission.READ_SMS"/> 
</manifest> 

¿Qué debo hacer?

Respuesta

4

Parece que necesita compilar APK diferentes para versiones antiguas y nuevas. Consulte el blog publicado en http://android-developers.blogspot.com/search/label/Android%20Market sobre compatibilidad con múltiples APK: "La compatibilidad con múltiples APK le brinda una variedad de formas de controlar la distribución de aplicaciones. Por ejemplo, podría usarlo para crear APK por separado para teléfonos y tabletas bajo la misma lista de productos".

+0

Gracias, lo haré. – Goran

13

Compruebe su proyecto Objetivo de compilación Para admitir la pantalla xlarge, el objetivo de compilación de su proyecto debe ser al menos android 2.3.3 adk.

En Eclipse - hacer clic derecho sobre el proyecto -> Propiedades -> Android -> Seleccionar el proyecto Construir Tagrget como 2.3.3 o en adelante

+0

¿Esto significa que mi aplicación no se podrá usar en dispositivos Android con Android 1.6, 2.1 y 2.2? – Goran

+0

Sí, eso es correcto – Jack

+0

sí. La aplicación no será utilizable en dispositivos Android con Android 1.6, 2.1 y 2.2 –

3

Necesita utilizar al menos Nivel API androide 9 para android:xlargeScreens a ser reconocido en AndroidManifest.xml.

Para esto, asegúrese de que en su archivo default.properties tiene target=android-9 o superior. Esto también se puede establecer usando Propiedades del proyecto, en la sección de Android.

+0

¡No vi esta advertencia, hasta que actualice adt a 23 y eclipse a 4.x! en pasado establecí xlargeScreen = true y minSdkversion = 8. –

1

¿Cuál es su nivel de API configurado? Dice en la documentación que requiere API 9 o superior. 9 es 2.3. Ver this enlace que dice:

android:xlargeScreens Indicates whether the application supports extra large screen form-factors. An xlarge screen is defined as a screen that is significantly larger than a "large" screen, such as a tablet (or something larger) and may require special care on the application's part to make good use of it, though it may rely on resizing by the system to fill the screen. The default value for this actually varies between some versions, so it's better if you explicitly declare this attribute at all times. Beware that setting it "false" will generally enable screen compatibility mode. This attribute was introduced in API level 9.

2

El problema es su minSdkVersion.

El atributo xlargeScreens se introdujo en API-Level 9. Como ha especificado que su aplicación probablemente se ejecutará en API-Level 4, Android no puede encontrar este atributo.

Cambie el minSdkVersion -tribuya a 11 y debería funcionar.

El -attribute targetSdkVersion, que se define como ser 11 sólo indica que la aplicación fue desarrollada para dirigir esta versión (por lo que es "recomendada"), pero el minSdkVersion especifica el mínimo API de nivel, ver here.

+0

¿Pero entonces mi aplicación no será utilizable en teléfonos Android con la versión Android 2.1 y 2.2? o estoy equivocado? – Goran

+0

Sí. Está bien. –

+0

Ok, ¿cómo puedo hacer que mi aplicación funcione en teléfonos y tabletas? porque en el sitio de publicación en el mercado, ¿las tabletas no están en dispositivos compatibles? – Goran

6

Mi aplicación es compatible con versiones de Android 1.5 a la última versión y esto es lo que tengo en mi manifiesta:

<supports-screens 
     android:largeScreens="true" 
     android:normalScreens="true" 
     android:smallScreens="true" 
     android:anyDensity="true" /> 

Esto es lo que aparece en el sitio de desarrolladores de Android Market para mi aplicación:

Screen layouts: SMALL NORMAL LARGE XLARGE 
Required device features 
     android.hardware.touchscreen 
This application is available to over 555 devices. 

Además, el objetivo de compilación de mi proyecto es 2.3.3, pero todavía tengo muchas instalaciones en dispositivos que ejecutan android 3.0

Y esto es sólo una suposición, no estoy seguro de esto, pero no incluiría permisos como CALL_PHONE filtrar la aplicación desde la búsqueda en una tableta ya que no tienen esa característica?

+0

Ok, y ¿qué hay de la premisión SEND_SMS? – Goran

+0

Creo que el problema de que mi aplicación está empujando más de 469 dispositivos es que utilizo un android.hardware.telephony ... ¿Pero puede ser eliminado y mi aplicación todavía puede enviar SMS? – Goran

+0

No sé lo que hace su aplicación, pero creo que tiene que eliminar la parte de su aplicación que se ocupa de llamar y enviar sms, ya que las tabletas no tienen e esas características. – magicman

1

android:xlargeScreens :
Este atributo se introdujo en el nivel API 9 (Android 2.3.3). Si su objetivo de compilación es menor que el nivel API 9, obtendrá el error "No resource identifier found for attribute 'xlargeScreens' in package 'android"
Establezca su objetivo de compilación en Nivel de API 9 o superior y este error desaparecerá.

Cuestiones relacionadas