Warum fügt Eclipse automatisch Unterstützung für die Appcompat v7-Bibliothek hinzu, wenn ich ein neues Projekt erstelle?

217

Warum fügt Eclipse automatisch appcompat v7Bibliotheksunterstützung hinzu, wenn ich ein neues Projekt erstelle?

Ich erstelle ein einfaches Projekt, MainActivitydas erweitert werden sollte Activity, aber nicht. Eclipse fügt automatisch Unterstützung für Aktionsleisten hinzu.

Wie erstelle ich ein einfaches Projekt ohne die appcompatBibliothek? Zu Ihrer Information, ich habe die neueste Version von ADT heruntergeladen, wobei alles kürzlich aktualisiert wurde. Ich benutze Windows 7 x64.

Geben Sie hier die Bildbeschreibung ein

Talha Q.
quelle

Antworten:

105

Wie in der Übersicht über die Support-Bibliothek von Android angegeben , wird aufgrund der großen Gerätevielfalt und der Fragmentierung zwischen den verschiedenen Android-Versionen (und damit der bereitgestellten APIs) empfohlen , die Support-Bibliothek standardmäßig einzuschließen.

Dies ist der Grund, warum Android -Codevorlagen-Tools, die in Eclipse enthalten sind, Android Development Tools (ADT)standardmäßig integriert werden.

Ich habe festgestellt, dass Sie API 15in Ihrem Beispiel ein Ziel festlegen, aber das für Ihr Paket erforderliche SDK ist mindestens das API 10, für das die Kompatibilitätsbibliotheken eine enorme Menge abwärtskompatibler APIs bereitstellen können. Ein Beispiel wäre die Möglichkeit, Fragment APIdas auf API 11 (Android 3.0 Honeycomb) angezeigte Gerät auf einem Gerät zu verwenden, auf dem eine ältere Version dieses Systems ausgeführt wird.

Es ist auch zu beachten, dass Sie die automatische Aufnahme der Support-Bibliothek standardmäßig deaktivieren können .

Halim Qarroum
quelle
54
Nun, das ist BS. Ich habe Eclipse auf API-Ebene 10 in den letzten 2 Monaten verwendet und es wurde nie die Kompatibilitätsbibliothek oder ein Fragment-Layout importiert, bis diese verdammte Kitkat-API herauskam. An diesem Punkt scheint der einfachste Weg, das Erscheinen zu stoppen, darin zu bestehen, keine Aktivität automatisch zu erstellen. Sie müssen also "Aktivität erstellen" deaktivieren und Ihre eigene erstellen, wenn das Projekt erstellt wurde.
user3223214
2
Ja, das ist der Punkt, die Bibliothek wird aus den oben genannten Gründen immer enthalten sein.
Halim Qarroum
1
Nun, die Support-Bibliothek bietet Abwärtskompatibilität für zahlreiche Komponenten des Android SDK. Nicht nur für die ActionBar. In der neuesten Version der Support-Bibliothek finden Sie eine ganze Reihe unterstützter APIs. Weitere Informationen finden Sie unter developer.android.com/tools/support-library/index.html .
Halim Qarroum
1
Ist es besser, den app_compat zu vermeiden?
Neolardo Va Dinci
2
Herrgott google !!! Beenden Sie das Patchen und Patchen und Patchen. All diese Fehler und Versionen von supportLibrary machen uns verrückt.
Josh
59

Erstellen Sie eine neue Android Application Projectund deaktivieren Sie Create activity in Schritt 2 (Projekt konfigurieren).

Songhir
quelle
Danke, aber der menuOrdner wurde in meinem Projekt nicht erstellt.
Steve
1
Das Löschen des appcompat_v7-Projekts aus meinem Arbeitsbereich und das Erstellen eines neuen Android-Projekts durch Deaktivieren der Option "Aktivität erstellen" hat mir geholfen. Dinge, die in anderen Antworten angegeben sind, haben bei mir nicht funktioniert. Vielen Dank.
Srinivasan N
22

Warum meine Eclipse automatisch die Unterstützung der Appcompat v7-Bibliothek hinzufügt, wenn ich ein neues Projekt erstelle

Da Ihr Ziel-SDK auf 15 festgelegt ist, wobei die Aktionsleiste standardmäßig aktiviert ist und Ihr minimal unterstütztes SDK auf 10 festgelegt ist, wird die Aktionsleiste in 11 angezeigt. Sie benötigen also eine Unterstützungsbibliothek. Eclipse fügt sie für Sie hinzu. Referenz.

Sie können Projektbibliotheken im Erstellungspfad der Projekteigenschaften konfigurieren.

Adam Stelmaszczyk
quelle
12
Wenn ich das Minimum SDK als 12 oder 13 konfiguriere, bekomme ich immer noch das gleiche Verhalten von Eclipse ...
Mikey
18

Eclipse hat automatisch die appcompat_v7 erstellt. Da Kitkat Api sich selbst gestartet hat, fügt es automatisch appcompat_v7und hinzu fragment_main.xml.

Beste Möglichkeiten, um diese zu lösen:

  1. Erstens im Projekt Right click->properties->Android. Dort können Sie die red marked appcompatplatzierten sehen Reference. Klicken Sie darauf und entfernen Sie es. Aktivieren Sie dann den richtigen Zielnamen in Project Build Target.

  2. Löschen Sie die in Ihrer Eclipse erstellte Datei fragment_main.xml und Appcompat .

  3. Bearbeiten und ändern Sie Ihre activity_main.xml wie folgt:

    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
    </RelativeLayout>
    
  4. In res / values ​​/ styles.xml:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
    
  5. In res / values-v11 / styles.xml müssen Sie Folgendes ändern:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
    
  6. In res / values-v14 / styles.xml müssen Sie Folgendes ändern:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
    
  7. Ändern Sie Ihr Menü / main.xml wie folgt :

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/action_settings"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="@string/action_settings"/>
    
    </menu>
    
  8. Ändern Sie schließlich Ihre MainActivity.java wie folgt :

    import android.app.Activity;
    import android.os.Bundle;
    
    
    public class MainActivity extends Activity {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    }
    
    }
    

LikeWise müssen Sie dies tun, um ein neues Projekt zu erstellen

Steve
quelle
2
Was denken sie? Sollte Eclipse dafür keine Ein-Klick-Lösung haben?
Pacerier
1
@ Pacerier: Ja. Mit appcompat_v7.
David Liu
8

Es ist enthalten, da Ihre SDK-Mindestversion auf 10 festgelegt ist. Die ActionBarwurde in API 11 eingeführt. Eclipse fügt sie automatisch hinzu, damit Ihre App im gesamten Spektrum aller von Ihnen unterstützten Android-Versionen konsistenter aussieht.

Ahmad
quelle
4

Wenn Sie nicht auf 2.x-Versionen abzielen, können Sie Ihre SDK-Mindestversion von 4.x festlegen und dann ein Projekt erstellen. Appcompat V7 lib wird nicht erstellt.

Swapnil
quelle
4

Ich bin neu in Android und das Projekt appcompat_v7 wird immer erstellt, wenn ich ein neues Android-Anwendungsprojekt erstelle, was mich so unwohl macht.

Dies ist nur ein Spaziergang. Wählen Sie Projekteigenschaften -> Android und entfernen Sie im Feld Bibliothek einfach appcompat_v7_x und fügen Sie appcompat_v7 hinzu. Jetzt können Sie appcompat_v7_x löschen.

Deaktivieren Sie das Kontrollkästchen Aktivität erstellen im Assistenten zum Erstellen von Projekten nicht, da beim Erstellen von Aktivitäten mit dem Assistenten die Datei appcompat_v7_x erneut angezeigt wird. Die Version meines ADT ist v22.6.2-1085508 .
Es tut mir leid, wenn mein Englisch schlecht ist.

Lê Quang Duy
quelle
1
Schauen Sie sich an, dass hier so viele Antworten vorhanden sind. Dieser Abschnitt dient zur Beantwortung. Sie haben eine Frage im Antwortbereich gepostet.
Talha Q
1
Ich möchte nur einen Weg zeigen, um appcompat_v7_x zu entfernen, und ich denke nicht, dass dies eine Frage ist. Wenn ich einen Fehler gemacht habe, verzeihen Sie mir bitte, weil ich neu bei Stackoverflow bin.
Lê Quang Duy
3

Entschuldigung für mein Englisch. Wenn Sie ein neues Android-Projekt erstellen, sollten Sie eine API auf hohem Niveau auswählen, zum Beispiel: von API 17 bis API 21, es wird keine App-Kompatibilität haben und das Projekt ist sehr einfach zu teilen. Wenn Sie es mit der unteren API gemacht haben, bearbeiten Sie es einfach in Android Manifest, um die obere API zu haben :) Danach können Sie Appcompat V7 löschen.

nobjta_9x_tq
quelle
2

Laut http://developer.android.com/guide/topics/ui/actionbar.html

Die ActionBar-APIs wurden zuerst in Android 3.0 (API-Stufe 11) hinzugefügt , sind jedoch aus Kompatibilitätsgründen mit Android 2.1 (API-Stufe 7) und höher auch in der Support-Bibliothek verfügbar.

Kurz gesagt, dieses automatisch generierte Projekt, das Sie sehen, modularisiert den Prozess des Hinzufügens der ActionBar zu den APIs 7-10.

Beispiel für ActionBar auf Froyo

Unter http://hmkcode.com/add-actionbar-to-android-2-3-x/ finden Sie eine vereinfachte Erklärung und ein Tutorial zum Thema.

b1nary.atr0phy
quelle
0

Ich habe festgestellt, dass beim Erstellen eines neuen Android-Projekts mit ADT 22.6.2 eine Appcompat-Bibliothek erstellt wurde, auch wenn das minSDK auf 11 und das targetSDK auf 19 festgelegt waren

Dies geschah, weil Android in der neuen Projektvorlage einige Attribute verwendet, die aus der Support-Bibliothek stammen. Wenn zum Beispiel ein neues Projekt mit der Aktionsleiste erstellt wurde, kann man in der main.xml des Menüs finden, app:showAsAction="never"welches aus der Support-Bibliothek stammt.

  • Wenn die App auf Android Version 11 und höher ausgerichtet ist, kann dieses Attribut android:showAsActionin der Datei main.xml des Menüs geändert werden
  • Der Standard-Themensatz könnte auch "Theme.AppCompat.Light.DarkActionBar" sein (siehe unten) (styles.xml).

    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
           <!-- API 14 theme customizations can go here. -->
       </style> 

    In diesem Fall muss das übergeordnete Thema in style.xml in "android: style / Theme.Holo.Light.DarkActionBar" geändert werden.

  • Wenn im Code von MainActivity.java auf Fragment, Fragments Manager aus der Support-Bibliothek verwiesen wurde, müssen diese in Fragment, FragmentManager des SDK entsprechend geändert werden.
Jeevan
quelle