Dlaczego Eclipse automatycznie dodaje obsługę biblioteki appcompat v7 za każdym razem, gdy tworzę nowy projekt?

217

Dlaczego Eclipse automatycznie dodaje appcompat v7obsługę bibliotek za każdym razem, gdy tworzę nowy projekt?

Tworzę prosty projekt, który MainActivitypowinien zostać rozszerzony Activity, ale tak nie jest. Eclipse automatycznie dodaje obsługę paska akcji.

Jak mogę stworzyć prosty projekt bez appcompatbiblioteki? Do Twojej wiadomości, pobrałem najnowszą wersję ADT ze wszystkim, co zostało ostatnio zaktualizowane. Używam Windows 7 x64.

Wpisz opis zdjęcia tutaj

Talha Q
źródło

Odpowiedzi:

105

Jak stwierdzono w przeglądzie biblioteki wsparcia Androida , za dobrą praktykę uważa się domyślnie dołączanie biblioteki wsparcia ze względu na dużą różnorodność urządzeń i fragmentację istniejącą między różnymi wersjami Androida (a tym samym dostarczonych interfejsów API).

To jest powód, dla którego narzędzia szablonów kodów Androida zawarte w Eclipse poprzez Android Development Tools (ADT)ich integrację domyślnie.

Zauważyłem, że API 15celujesz w swojej próbce, ale minimalny wymagany SDK dla twojego pakietu to API 10, dla którego biblioteki kompatybilności mogą dostarczyć ogromną liczbę kompatybilnych wstecz API. Przykładem może być możliwość korzystania z tego, Fragment APIco się podobało API 11 (Android 3.0 Honeycomb) na urządzeniu, na którym działa starsza wersja tego systemu.

Należy również zauważyć, że domyślnie można dezaktywować automatyczne dołączanie biblioteki wsparcia .

Halim Qarroum
źródło
54
Cóż, to BS. Używam Eclipse na poziomie API 10 przez ostatnie 2 miesiące i nigdy nie importowałem biblioteki kompatybilności ani układu fragmentów, dopóki nie pojawił się ten dziwaczny interfejs API KitKata. Wydaje się, że w tym momencie najprostszym sposobem, aby przestało się pojawiać, jest automatyczne tworzenie Działania. Musisz więc odznaczyć opcję „utwórz aktywność” i utwórz własną, gdy projekt zostanie utworzony.
user3223214,
2
Tak, o to chodzi, biblioteka zawsze będzie dołączana z powyższych powodów.
Halim Qarroum,
1
Biblioteka obsługi zapewnia kompatybilność wsteczną dla wielu składników zestawu SDK systemu Android. Nie tylko dla ActionBar. W najnowszej wersji biblioteki wsparcia można znaleźć całą masę obsługiwanych interfejsów API. Możesz zajrzeć na developer.android.com/tools/support-library/index.html w celu uzyskania dalszych szczegółów.
Halim Qarroum
1
Czy lepiej unikać app_compat?
Neolardo Va Dinci
2
Jezu google !!! przestańcie łatać i łatać i łatać, wszystkie te błędy związane z obsługą bibliotek i wersjami doprowadzają nas do szału.
Josh
59

Utwórz nowy Android Application Projecti odznacz Create activity w kroku drugim (Konfiguruj projekt).

songhir
źródło
Dzięki Ale menufolder nie został utworzony w moim projekcie.
Steve
1
Usunięcie projektu appcompat_v7 z mojego obszaru roboczego i utworzenie nowego projektu Androida poprzez odznaczenie opcji „Utwórz aktywność” załatwiło sprawę. Rzeczy określone w innych odpowiedziach nie działały dla mnie. Dzięki.
Srinivasan N
22

Dlaczego moje zaćmienie automatycznie dodaje obsługę biblioteki appcompat v7 za każdym razem, gdy tworzę nowy projekt

Ponieważ docelowy zestaw SDK jest ustawiony na 15, w którym pasek akcji jest domyślnie włączony, a minimalny obsługiwany zestaw SDK jest ustawiony na 10. Pasek akcji pojawia się w 11, więc potrzebujesz biblioteki wsparcia, Eclipse dodaje go dla Ciebie. Odniesienie.

Możesz skonfigurować biblioteki projektów na ścieżce kompilacji właściwości projektu.

Adam Stelmaszczyk
źródło
12
Jeśli skonfiguruję minimalny SDK jako 12 lub 13, nadal otrzymuję to samo zachowanie od zaćmienia ...
Mikey
18

Eclipse automatycznie utworzył appcompat_v7. Ponieważ Kitkat Api uruchomiło się, dodaje automatycznie appcompat_v7i fragment_main.xml.

Najlepsze sposoby rozwiązania tych problemów:

  1. Po pierwsze w projekcie Right click->properties->Android. Tam możesz zobaczyć red marked appcompatumieszczone w Reference. Kliknij i usuń. Następnie zaznacz właściwą nazwę celu w Project Build Target.

  2. Usunąć fragment_main.xml i plik Appcompat utworzony w Eclipse .

  3. Edytuj i zmień plik activity_main.xml w następujący sposób:

    <?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. W res / wartości / styles.xml:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
  5. W res / wartości-v11 / styles.xml musisz zmienić w następujący sposób:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
  6. W res / wartości-v14 / styles.xml musisz zmienić w następujący sposób:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
  7. Zmień swoje menu / main.xml w następujący sposób:

    <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. Na koniec zmień swój MainActivity.java następujący sposób:

    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 musisz to zrobić, aby utworzyć nowy projekt

Steve
źródło
2
Co oni myślą? Czy Eclipse nie powinien mieć do tego rozwiązania jednym kliknięciem?
Pacerier
1
@Pacerier: Tak. Korzystając z appcompat_v7.
David Liu,
8

Zostało uwzględnione, ponieważ minimalna wersja zestawu SDK jest ustawiona na 10. ActionBarZostała wprowadzona w API 11. Eclipse dodaje ją automatycznie, dzięki czemu aplikacja może wyglądać bardziej spójnie w całym spektrum wszystkich obsługiwanych wersji Androida.

Ahmad
źródło
4

Jeśli nie kierujesz wersji 2.x, możesz ustawić minimalną wersję sdk 4.x, a następnie utworzyć projekt. Appcompat V7 lib nie zostanie utworzony.

Swapnil
źródło
4

Jestem nowy w Androidzie, a projekt appcompat_v7 zawsze jest tworzony podczas tworzenia nowego projektu aplikacji na Androida sprawia, że ​​czuję się nieswojo.

To tylko spacer. Wybierz Właściwości projektu -> Android, a następnie w polu Biblioteka po prostu usuń appcompat_v7_x i dodaj appcompat_v7. Teraz możesz usunąć appcompat_v7_x.

Odznacz opcję Utwórz działanie w kreatorze tworzenia projektu nie działa, ponieważ podczas tworzenia działania za pomocą kreatora ponownie pojawia się appcompat_v7_x . Wersja mojego ADT to v22.6.2-1085508 .
Przepraszam, jeśli mój angielski jest zły.

Lê Quang Duy
źródło
1
Sprawdź, jak wiele odpowiedzi znajduje się tutaj. Ta sekcja ma na celu udzielenie odpowiedzi. Masz pytanie w sekcji odpowiedzi.
Talha Q
1
Chcę tylko pokazać sposób na usunięcie appcompat_v7_x i nie sądzę, że to pytanie. Jeśli popełniłem błąd, proszę wybacz mi, bo jestem nowy z przepływem stosów.
Lê Quang Duy
3

Przepraszam z moim angielskim, kiedy tworzysz nowy projekt Androida, powinieneś wybrać api wysokiego poziomu, na przykład: od api 17 do api 21, nie będzie miał appcompat i bardzo łatwo będzie udostępniać projekt. Jeśli zrobiłeś to z niższym API, po prostu edytujesz w Manifeście Androida, aby mieć górny API :), a następnie możesz usunąć Appcompat V7.

nobjta_9x_tq
źródło
2

Według http://developer.android.com/guide/topics/ui/actionbar.html

Interfejsy API ActionBar zostały po raz pierwszy dodane w Androidzie 3.0 (API poziom 11), ale są one również dostępne w Bibliotece wsparcia dla kompatybilności z Androidem 2.1 (API poziom 7) i wyżej.

Krótko mówiąc, ten automatycznie wygenerowany projekt, który widzisz, modularyzuje proces dodawania paska ActionBar do interfejsów API 7-10.

Przykład ActionBar na Froyo

Zobacz http://hmkcode.com/add-actionbar-to-android-2-3-x/, aby uzyskać uproszczone wyjaśnienie i samouczek na ten temat.

b1nary.atr0phy
źródło
0

Zauważyłem utworzenie biblioteki „appcompat” podczas tworzenia nowego projektu Androida z wersją ADT 22.6.2, nawet gdy minSDK ustawiono na 11, a docelowy SDDK ustawiono na 19

Działo się tak, ponieważ w nowym szablonie projektu Android używa niektórych atrybutów pochodzących z biblioteki wsparcia. Na przykład, jeśli nowy projekt został utworzony za pomocą paska akcji, to w pliku main.xml menu można znaleźć, app:showAsAction="never"który pochodzi z biblioteki wsparcia.

  • Jeśli aplikacja jest skierowana na Androida w wersji 11 i wyższej, można zmienić ten atrybut na android:showAsActionw main.xml menu
  • Domyślnym zestawem motywów może być również „Theme.AppCompat.Light.DarkActionBar”, jak pokazano poniżej (styles.xml)

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

    W takim przypadku motyw nadrzędny w pliku style.xml należy zmienić na „android: style / Theme.Holo.Light.DarkActionBar”

  • Oprócz tego, jeśli w kodzie MainActivity.java pojawiło się odwołanie do Fragment, Fragments Manager z biblioteki wsparcia, należy je odpowiednio zmienić na Fragment, FragmentManager z SDK.
Jeevan
źródło