Yeni bir proje oluşturduğumda neden Eclipse otomatik olarak appcompat v7 kütüphanesi desteği ekliyor?


217

appcompat v7Yeni bir proje oluşturduğumda neden Eclipse otomatik olarak kütüphane desteği ekliyor ?

Genişlemesi MainActivitygereken basit bir proje yaratıyorum Activity, ama devam etmiyor. Eclipse otomatik olarak eylem çubuğu desteği ekler.

appcompatKütüphane olmadan nasıl basit bir proje oluşturabilirim ? Bilginize, ADT'nin en son sürümünü indirdim. Pencere 7 x64 kullanıyorum.

Resim açıklamasını buraya girin

Yanıtlar:


105

Android'in Destek Kitaplığına Genel Bakış'ta belirtildiği gibi , çok çeşitli cihaz çeşitliliği ve Android'in farklı sürümleri (ve böylece sağlanan API'lerin) arasındaki parçalanma nedeniyle destek kitaplığını varsayılan olarak dahil etmek iyi bir uygulama olarak kabul edilir.

Eclipse'de bulunan Android kod şablonları araçlarınınAndroid Development Tools (ADT) varsayılan olarak bunları entegre etmesinin nedeni budur .

API 15Örneğinizde hedeflediğinizi belirttim , ancak paketiniz için gerekli olan minimum SDK API 10, uyumluluk kitaplıklarının çok sayıda geriye dönük uyumlu API sağlayabildiğini belirtti. Buna bir örnek Fragment API, API 11 (Android 3.0 Honeycomb) üzerinde görünenleri bu sistemin daha eski bir sürümünü çalıştıran bir cihazda kullanma yeteneğidir .

Ayrıca, varsayılan olarak Destek Kitaplığı'nın otomatik olarak eklenmesini devre dışı bırakabileceğinizi de not etmek gerekir .


54
BS. Eclipse 10 aydır API düzeyinde son 2 aydır kullanıyorum ve bu korkutucu kitkat api çıkana kadar uyumluluk kütüphanesini veya bir parça düzenini asla içe aktarmadı. Bu noktada, görünmesini durdurmanın en basit yolu otomatik olarak bir Etkinlik oluşturmak değildir. Dolayısıyla, "etkinlik oluştur" un işaretini kaldırmanız ve proje oluşturulduğunda kendinizinkini oluşturmanız gerekir.
user3223214 9:14

2
Evet, mesele bu, yukarıdaki nedenlerden dolayı her zaman kütüphane dahil edilecek.
Halim Qarroum

1
Destek kitaplığı, Android SDK'nın birçok bileşeni için geriye dönük uyumluluk sağlar. Yalnızca ActionBar için değil. Destek kütüphanesinin en son sürümünde bir dizi desteklenen API bulabilirsiniz. Daha fazla bilgi için developer.android.com/tools/support-library/index.html adresine göz atmak isteyebilirsiniz .
Halim Qarroum 30'14

1
App_compat kullanmaktan kaçınmak daha mı iyi?
Neolardo Va Dinci

2
Jeez Google !!! yama ve bırakma ve yama ve çıkma, tüm bu destek demetKütüphane hataları ve sürümleri bizi deli ediyor.
Josh

59

Yeni bir tane oluştur Android Application Project ve ikinci adımda (Projeyi yapılandırın) işaretini kaldırın Create activity .


Teşekkürler Ama menuprojemde klasör oluşturulmadı.
Steve

1
Appcompat_v7 projesini çalışma alanımdan silmek ve 'Etkinlik oluştur' seçeneğinin işaretini kaldırarak yeni bir android projesi oluşturmak benim için hile yaptı. Diğer cevaplarda belirtilen şeyler benim için işe yaramadı. Teşekkürler.
Srinivasan N

22

Her yeni proje oluşturduğumda, tutulma neden otomatik olarak appcompat v7 kütüphane desteği ekliyor?

Hedef SDK'nız 15 olarak ayarlandığından, Eylem Çubuğu varsayılan olarak açıktır ve desteklenen minimum SDK'nız 10 olarak ayarlanmıştır. Eylem Çubuğu 11'de çıkar, bu nedenle bir destek kitaplığına ihtiyacınız vardır, Eclipse sizin için ekler. Referans.

Proje kitaplıklarını, proje özelliklerinin oluşturma yolunda yapılandırabilirsiniz.


12
Minimum sdk'yi 12 veya 13 olarak yapılandırırsam hala aynı davranışı tutulmadan alırım ...
mikey

18

Eclipse otomatik olarak appcompat_v7'yi yarattı.Kitkat Api kendini başlattığı için otomatik olarak ekler appcompat_v7ve fragment_main.xml.

Bunları çözmenin en iyi yolları:

  1. Öncelikle projede, Right click->properties->Android.Orada'da Gördüğünüz red marked appcompatyerleştirildi Reference. Bunu tıklayın ve kaldırın.Daha sonra doğru hedef adını işaretleyin Project Build Target.

  2. Eclipse dosyanızda oluşturulan fragment_main.xml ve Appcompat dosyasını silin .

  3. Activity_main.xml dosyanızı aşağıdaki gibi düzenleyin ve değiştirin :

    <?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 / değerler / 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 aşağıdakiler gibi değişime vardır:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
  6. In res / values-V14 / styles.xml aşağıdakiler gibi değişime vardır:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
  7. Menu / main.xml dosyanızı aşağıdaki gibi değiştirin :

    <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. Son olarak MainActivity.java'nızı şu şekilde değiştirin :

    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);
    
    }
    
    }

Yeni bir proje oluşturmak için bunu yapmalısın


2
Ne düşünüyorlar? Eclipse'ın bunun için tek tıklamayla bir çözümü olmamalı mı?
Pacerier

1
@ Pacer: Evet. Appcompat_v7 kullanarak.
David Liu

8

Minimum SDK sürümünüz 10 olarak ayarlandığından eklenmiştir ActionBar. API 11'de tanıtıldı. Eclipse, uygulamanız desteklediğiniz tüm android sürümlerinin spektrumu boyunca daha tutarlı görünebilmesi için otomatik olarak ekler.


4

2.x sürümlerini hedeflemiyorsanız, 4.x'in minimum sdk sürümünüzü ayarlayabilir ve ardından proje oluşturabilirsiniz. Appcompat V7 lib oluşturulmayacak.


4

Android ile yeniyim ve yeni Android uygulama projesi oluşturduğumda her zaman oluşturulacak appcompat_v7 projesi beni çok rahatsız ediyor.

Bu sadece bir yürüyüş. Proje Özellikleri -> Android'i seçin, ardından Kütüphane kutusunda appcompat_v7_x'i kaldırın ve appcompat_v7'yi ekleyin. Şimdi appcompat_v7_x dosyasını silebilirsiniz.

Proje oluşturma sihirbazında Etkinlik Oluştur seçeneğinin işaretini kaldırın, çünkü sihirbaz tarafından etkinlik oluşturulurken appcompat_v7_x tekrar görünür. ADT'nin sürümü v22.6.2-1085508 .
İngilizcem kötü ise üzgünüm.


1
Burada bu kadar çok cevap bulunduğuna göz atın. Bu bölüm cevap içindir. Cevap bölümünde soru yayınladınız.
Talha Q

1
Sadece appcompat_v7_x kaldırmak için bir yol göstermek istiyorum ve bunun bir soru olduğunu sanmıyorum. Bir hata yaptıysam lütfen affet beni çünkü stackoverflow ile yeniyim.
Lê Quang Duy

3

İngilizce ile özür dilerim, Yeni bir android projesi oluşturduğunuzda, yüksek düzeyde bir api seçmelisiniz, örneğin: api 17'den api 21'e, appcompat'e sahip olmayacak ve projeyi paylaşmak çok kolay olmayacak. Daha düşük API ile yaptıysanız, Android Manifest'te üst API'ya sahip olacak şekilde düzenlersiniz :), bundan sonra Appcompat V7'yi silebilirsiniz.


2

Http://developer.android.com/guide/topics/ui/actionbar.html adresine göre

ActionBar API'ları ilk olarak Android 3.0'a (API düzey 11) eklendi, ancak Android 2.1 (API düzey 7) ve üstü ile uyumluluk için Destek Kitaplığı'nda da bulunurlar.

Kısacası, gördüğünüz otomatik oluşturulan proje , 7-10 API'larına ActionBar ekleme işlemini modüler hale getirir.

Froyo'daki ActionBar Örneği

Bkz. Http://hmkcode.com/add-actionbar-to-android-2-3-x/Konuyla ilgili basitleştirilmiş bir açıklama ve öğretici için .


0

MinSDK 11 olarak ayarlanmış ve targetSDK 19 ayarlanmış olsa bile ADT 22.6.2 sürümü ile yeni android projesi oluştururken 'appcompat' kütüphanesinin oluşturulduğunu fark ettim.

Bu, yeni proje şablonunda android'in destek kitaplığındaki bazı öznitelikleri kullanması nedeniyle oluyordu. Örneğin, actionbar ile yeni bir proje oluşturulduysa, menünün main.xml app:showAsAction="never"dosyasında destek kütüphanesinden hangisi bulabilir .

  • Uygulama android sürüm 11 ve üstünü hedefliyorsa, bu özelliği android:showAsActionmenünün main.xml'sinde değiştirebilirsiniz.
  • Ayrıca, varsayılan tema kümesi aşağıda gösterildiği gibi "Theme.AppCompat.Light.DarkActionBar" olabilir (styles.xml)

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

    Bu durumda, style.xml dosyasında ana tema "android: style / Theme.Holo.Light.DarkActionBar" olarak değiştirilmelidir.

  • Buna ek olarak, MainActivity.java kodunda destek kitaplığından Fragment Manager, Fragments Manager yapıldıysa, bunların uygun şekilde SDK'nın FragmentManager'ı olarak değiştirilmesi gerekir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.