2010-07-25 13 views
12

Właśnie zaczynam korzystać z Eclipse dla aplikacji na Androida. Zainstalowałem Eclipse 3.5.2 i Java 5 AVD to Android 2.1 API 7Aplikacja nie określa poziomu interfejsu API

Mój początkowy program z Androidem działa poprawnie, ale nie uruchomi się ponownie.

otrzymuję następujący błąd:

[2010-07-25 09:47:31 - HelloAndroid] WARNING: Application does not specify an API level requirement!
[2010-07-25 09:47:31 - HelloAndroid] Device API version is 7 (Android 2.1-update1)

przeszukali fora ale znaleźliśmy tylko refernece do pliku manifestu, aby upewnić się co następuje set:

<uses-sdk android:minSdkVersion="3" /> 

mój plik manifestu nie zawiera tę linię :

<?xml version="1.0" encoding="utf-8" ?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloandriod" android:versionCode="1" android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".HelloAndroid" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    </manifest> 

Sprawdziłem mgr adv i ustawiono na 7 W Eclipse poszedłem do właściwości -> Android i ustawić ją na 7

uzyskać takie same ostrzeżenia

+0

Tak jak headsup. Eclipse nie wygeneruje tej linii tylko dlatego, że tworzysz AVD w menedżerze SDK. Ustawienie docelowego interfejsu API za pomocą właściwości jest właściwym ruchem, ale również nie spowoduje wygenerowania linii dla ciebie. Jest generowany tylko wtedy, gdy określiłeś AVD podczas tworzenia projektu. I tak nie mogę znaleźć takiego przy imporcie istniejącego projektu, tylko poprzez nowy projekt – celem

Odpowiedz

35

Dobrze, jeśli Eclipse jest, niezależnie od przyczyny, nie generując ten wiersz dla ciebie, ze wszech miar można go dodać siebie.

Dodaj linię:
<uses-sdk android:minSdkVersion="3" />

do manifestu, tuż przed kończącym oczywistego tagu.

+0

Upewnij się również dokładnie, jaki wpływ ma ustawianie różnych znaczników '': http://developer.android.com/guide/ publikowanie/versioning.html # minsdkversion –

10

Należy także

<uses-sdk android:minSdkVersion="7" /> 

w swoim pliku manifestu, jeżeli nie jest już tam. Z twojego pytania nie wynika jednoznacznie, ale wydaje się, że tak nie jest.

Na przyszłość temat poziomów API, patrz this page

+0

Dzięki za wiadomość. Dla każdego, kto to czyta, ręcznie wpisuję dwie komendy src, a Eclipse nie lubi ręcznego wprowadzania danych. Said nie był zsynchronizowany. Ale udało mi się zaktualizować manifest w ramach Eclipse. Działa bez błędów, ale avd wyświetla tylko datę i godzinę. Wymyślę, ale przynajmniej nie ma błędów. Dzięki – Trent

7

Wydaje się, że jest to błąd w Android SDK Tools rewizji 16, który wymaga prawidłowego uporządkowania uses-sdk tagów. Jeśli używasz zarówno targetSdkVersion i minSdkVersion, zamówić je w następujący sposób:

<uses-sdk android:targetSdkVersion="10" /> <!-- before minSdkVersion --> 
<uses-sdk android:minSdkVersion="7" />  <!-- after targetSdkVersion --> 

odwrócenie kolejności wydadzą komunikat ostrzegawczy i pop się okno wyboru urządzenia. Dlatego zalecam pisanie to w jednym wierszu:

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

Potwierdzone. Dziwne naprawdę. –

+0

Otworzyłem [numer # 27320] (http://code.google.com/p/android/issues/detail?id=27320). –

+0

Problem został rozwiązany dzięki nowemu ostrzeżeniu Lint! Hurra! –

2

Manifest powinien zawierać tylko jeden element, to błąd w użyciu więcej niż jeden raz.

W ADT 17, mamy nowy ostrzeżenie niestrzępiącą który wykrywa i raporty tego problemu:

$ lint --version 
lint: version 17 
$ lint --show MultipleUsesSdk 
MultipleUsesSdk 
--------------- 
Summary: Checks that the <uses-sdk> element appears at most once 

Priority: 6/10 
Severity: Error 
Category: Correctness 

The <uses-sdk> element should appear just once; the tools will *not* merge the 
contents of all the elements so if you split up the atttributes across 
multiple elements, only one of them will take effect. To fix this, just merge 
all the attributes from the various elements into a single <uses-sdk> 
element. 

Więcej informacji: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

+0

Dzięki za komentarz komentarz tutaj też. Dla porównania zamkniętym problemem był [numer # 27320] (http://code.google.com/p/android/issues/detail?id=27320). –

0

trzeba określić poziom API w kodzie i powinno być w jednej linii.

uses-sdk android: targetSdkVersion = "19" android: minSdkVersion = "4".

Cel powinien być najnowszy. To może ci pomóc, tak jak dla mnie. Dzięki

Powiązane problemy