2012-01-26 1 views
7

Sto lavorando a un'applicazione Android in cui mi piacerebbe avere i flag largeHeap e hardwareAccelerated. Tuttavia, deve supportare anche Android 2.3.Posso impostare gli attributi API di livello X nel mio manifest quando my minSdkVersion è minore di X?

mio AndroidManifest.xml è simile al seguente:

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

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

Tuttavia, Eclipse si rifiuta di costruire il progetto, dicendo:

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

Alzare la targetSdkVersion a 11, in cui sono stati introdotti tali bandiere, non risolve il problema

È possibile supportare Android 2.3 e impostare ancora questi flag?

risposta

11

Sì, è possibile aggiungere gli attributi XML ma è necessario creare con il livello sdk richiesto per tali attributi. Le piattaforme precedenti ignoreranno semplicemente questi attributi. Per fare ciò, modificare Project Build Target in 11 nelle impostazioni Android specifiche del progetto in Eclipse.

Ma attenzione, se si inizia a costruire il vostro progetto con livello di SDK 11 si potrebbe facilmente scivolare nel codice che non esegue su dispositivi con livello di < 11.

Vedi Backward Compatiblity per una spiegazione simile su come attivare la Attributo installLocation (introdotto nel livello 8) e ancora compilato per livello sdk inferiore a 8.

+1

android: minSdkVersion = "8" android: targetSdkVersion = "11". Vai alle proprietà del progetto -> Android -> seleziona Android 3.0. Non causerà errori. Fine –

+0

Sembra che questo non consenta effettivamente di avere l'attributo (ad esempio largeHeap) che ha effetto se la destinazione non sta eseguendo il livello API 11. – Michael