2012-01-26 4 views
7

Pracuję nad aplikacją dla systemu Android, na której chciałbym mieć włączone flagi LargeHeap i HardwareAccelerated. Jednak musi również obsługiwać system Android 2.3.Czy mogę ustawić atrybuty poziomu API X w moim manifeście, gdy moja minSdkVersion jest mniejsza niż X?

My AndroidManifest.xml wygląda następująco:

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

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

Jednak Eclipse odmawia budowania projektu, mówiąc:

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

Podniesienie targetSdkVersion do 11, gdzie wprowadzono takie flagi, nie rozwiązuje problemu.

Czy można obsługiwać system Android 2.3 i nadal ustawiać te flagi?

Odpowiedz

11

Tak, możesz dodać atrybuty XML, ale musisz zbudować z wymaganym poziomem sdk dla tych atrybutów. Starsze plattformy po prostu zignorują te atrybuty. Aby to zrobić, zmień wartość Project Build Target na 11 w ustawieniach Androida dla konkretnego projektu w środowisku Eclipse.

jednak zwrócić uwagę, jeśli zaczniesz budować swój projekt z poziomu sdk 11 można łatwo wsunąć w kodzie, który nie wykonuje na urządzeniach z poziomu < 11.

Zobacz Backward Compatiblity na podobnym wyjaśnieniem, w jaki sposób włączyć Atrybut installLocation (wprowadzony na poziomie 8) i nadal budowany na poziomie sdk jest mniejszy niż 8.

+1

android: minSdkVersion = "8" android: targetSdkVersion = "11". Przejdź do właściwości projektu -> Android -> wybierz Androida 3.0. Nie spowoduje błędu. Zrobione –

+0

Wygląda na to, że nie pozwala to na zastosowanie atrybutu (na przykład) largeHeap), jeśli cel nie działa na poziomie interfejsu API 11. – Michael

Powiązane problemy