2012-01-26 7 views
7

Estoy trabajando en una aplicación de Android en la que me gustaría tener las banderas grandesHeap y hardwareAcelerado. Sin embargo, también necesita ser compatible con Android 2.3.¿Puedo establecer atributos de nivel X de API en mi manifiesto cuando mi minSdkVersion es menor que X?

Mi AndroidManifest.xml tiene el siguiente aspecto:

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

<application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:hardwareAccelerated="true" 
     android:largeHeap="true" 
     > 

Sin embargo, Eclipse se niega a construir el proyecto, diciendo:

error: No resource identifier found for attribute 'hardwareAccelerated' in package 'android' 
error: No resource identifier found for attribute 'largeHeap' in package 'android' 

El aumento de la targetSdkVersion a 11, donde se introdujeron dichas banderas, no resuelve el problema

¿Es posible admitir Android 2.3 y aún configurar estas banderas?

Respuesta

11

Sí, puede agregar los atributos XML, pero debe compilar con el nivel de SDK requerido para esos atributos. Las plataformas antiguas ignorarán esos atributos. Para hacerlo, cambie el Project Build Target a 11 en la configuración de Android específica del proyecto en Eclipse.

Pero atención, si se inicia la construcción de su proyecto con el nivel SDK 11 que podría fácilmente caer en el código que se ejecuta en dispositivos con el nivel < 11.

Ver Backward Compatiblity una explicación similar sobre cómo habilitar la installLocation atributo (introducido en el nivel 8) y aún construir para el nivel sdk menor que 8.

+1

android: minSdkVersion = "8" android: targetSdkVersion = "11". Vaya a Propiedades del proyecto -> Android -> seleccione Android 3.0. No causará error. Hecho –

+0

Parece que esto realmente no le permite tener el atributo (por ejemplo) largeHeap) si el objetivo no está ejecutando el nivel 11 de la API. – Michael

Cuestiones relacionadas