Чому Eclipse автоматично додає підтримку бібліотеки appcompat v7 щоразу, коли я створюю новий проект?


217

Чому Eclipse автоматично додає appcompat v7підтримку бібліотеки, коли я створюю новий проект?

Я створюю простий проект, який MainActivityповинен розширюватися Activity, але це не так. Eclipse автоматично додає підтримку панелі дій.

Як створити простий проект без appcompatбібліотеки? FYI, я завантажив останню версію ADT з усіма оновленими нещодавно. Я використовую Windows 7 x64.

Введіть тут опис зображення

Відповіді:


105

Як зазначено в Огляді бібліотеки підтримки Android , вважається гарною практикою включати бібліотеку підтримки за замовчуванням через велику різноманітність пристроїв та фрагментацію, що існує між різними версіями Android (і, отже, наданих API).

Це причина, чому інструменти шаблонів коду Android, включені в Eclipse, Android Development Tools (ADT)інтегрують їх за замовчуванням.

Я зазначив, що ви націлюєтеся API 15у своєму зразку, але мінімальний необхідний SDK для вашого пакету - API 10це бібліотеки сумісності, які можуть забезпечити величезну кількість зворотних сумісних API. Прикладом може бути можливість використання того, Fragment APIщо з'являється на API 11 (Android 3.0 Honeycomb), на пристрої, на якому працює старіша версія цієї системи.

Також слід зазначити, що ви можете деактивувати автоматичне включення бібліотеки підтримки за замовчуванням.


54
Ну ось BS. Я використовував eclipse на рівні API 10 протягом останніх 2 місяців, і він ніколи не імпортував бібліотеку сумісності або макет фрагментів, поки не вийшов цей дивний kitkat api. Здається, на даний момент найпростіший спосіб зупинити його появу - це не створювати діяльність автоматично. Тож вам доведеться зняти позначку "створювати активність" і створювати власну, коли проект буде створено.
user3223214

2
Так, у цьому суть, бібліотека завжди буде включена через вищезазначені причини.
Halim Qarroum

1
Що ж, бібліотека підтримки забезпечує зворотну сумісність для багатьох компонентів Android SDK. Не тільки для ActionBar. У останній версії бібліотеки підтримки ви можете знайти цілу купу підтримуваних API. Можливо, ви захочете поглянути на developer.android.com/tools/support-library/index.html для отримання додаткової інформації.
Halim Qarroum

1
Чи краще уникати app_compat?
Neolardo Va Dinci

2
Боже, гугл !!! припиніть виправлення та виправлення та виправлення, усі ці сукупності помилок та версій бібліотеки зводять нас з розуму.
Джош

59

Створіть новий Android Application Projectі зніміть прапорець Create activity на другому кроці (Налаштування проекту).


Дякую, але menuпапка в моєму проекті не створена.
Стів

1
Видалення проекту appcompat_v7 з моєї робочої області та створення нового андроїд-проекту, знявши прапорець біля пункту "Створити активність" зробило для мене фокус. Речі, зазначені в інших відповідях, для мене не працювали. Дякую.
Шрінівасан N

22

Чому my eclipse автоматично додає підтримку бібліотеки appcompat v7 щоразу, коли я створюю новий проект

Оскільки для вашого цільового SDK встановлено значення 15, у якому панель дій увімкнена за замовчуванням, а ваш мінімально підтримуваний SDK - 10. Панель дій виходить через 11, тому вам потрібна бібліотека підтримки, Eclipse додає її для вас. Довідково.

Ви можете налаштувати бібліотеки проектів у шляху побудови властивостей проекту.


12
Якщо я налаштував мінімальний sdk як 12 або 13, я все одно отримаю таку ж поведінку від eclipse ...
mikey

18

Eclipse автоматично створив appcompat_v7. Через запуск Kitkat Api він додає автоматично appcompat_v7і fragment_main.xml.

Найкращі способи їх вирішення:

  1. По-перше, у проекті Right click->properties->Android.Там ви можете побачити red marked appcompatрозміщені в Reference. Клацніть це та Вилучіть, Потім поставте прапорець біля потрібного імені Project Build Target.

  2. Видаліть файл fragment_main.xml та файл Appcompat, створений у вашому Eclipse .

  3. Відредагуйте та змініть свою Activity_main.xml наступним чином:

    <?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. У res / values ​​/ styles.xml:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
    
  5. У res / values-v11 / styles.xml вам потрібно змінити так:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
    
  6. У res / values-v14 / styles.xml вам потрібно змінити так:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
    
  7. Змініть меню / main.xml таким чином:

    <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. Нарешті змініть MainActivity.java таким чином:

    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 ви повинні це зробити для створення нового проекту


2
Що вони думають? Чи не повинно Eclipse мати рішення в один клік для цього?
Pacerier

1
@Pacerier: Так. За допомогою appcompat_v7.
Девід Лю

8

Він включений, оскільки для вашої мінімальної версії SDK встановлено значення 10. ActionBarВведено в API 11. Eclipse додає його автоматично, щоб ваш додаток міг виглядати більш послідовним у всьому спектрі всіх версій Android, які ви підтримуєте.


4

Якщо ви не націлені на версії 2.x, ви можете встановити мінімальну версію SDK 4.x, а потім створити проект. Ліцензія Appcompat V7 не створюється.


4

Я новачок в Android, і проект appcompat_v7 завжди створюється, коли я створюю новий проект програми для Android, мені стає так незручно.

Це просто прогулянка. Виберіть Властивості проекту -> Android, а потім у полі Бібліотека просто видаліть appcompat_v7_x та додайте appcompat_v7. Тепер ви можете видалити appcompat_v7_x.

Зніміть прапорець Створити активність у майстрі створення проекту не працює, оскільки при створенні активності за допомогою майстра додаток apppat_v7_x з'являється знову. Версія мого ADT - v22.6.2-1085508 .
Вибачте, якщо моя англійська мова погана.


1
Перевірте стільки відповідей, які присутні тут. Цей розділ призначений для відповіді. Ви розмістили запитання у розділі відповідей.
Talha Q

1
Я просто хочу показати спосіб видалення appcompat_v7_x, і я не думаю, що це питання. Якщо я зробив помилку, будь ласка, вибачте мене, бо я новачок у stackoverflow.
Lê Quang Duy,

3

Вибачте з моєю англійською мовою, коли ви створюєте новий андроїд-проект, вам слід вибрати api високого рівня, наприклад: з api 17 на api 21, він не матиме appcompat і дуже легко ділитися проектом. Якщо ви зробили це з нижчим API, ви просто редагуєте в Android Manifest, щоб мати верхній API :), після цього ви можете видалити Appcompat V7.


2

Відповідно до http://developer.android.com/guide/topics/ui/actionbar.html

API ActionBar вперше були додані в Android 3.0 (рівень API 11), але вони також доступні в бібліотеці підтримки для сумісності з Android 2.1 (рівень API 7) і вище.

Коротше кажучи, цей автоматично згенерований проект, який ви бачите, модулює процес додавання ActionBar до API 7-10.

Приклад ActionBar на Froyo

Див. Http://hmkcode.com/add-actionbar-to-android-2-3-x/ для спрощеного пояснення та підручника з цієї теми.


0

Я помітив створення бібліотеки 'appcompat' під час створення нового проекту Android з версією ADT 22.6.2, навіть коли minSDK було встановлено на 11, а targetSDK - на 19

Це відбувалося через те, що в новому шаблоні проекту Android використовує деякі атрибути, що надходять із бібліотеки підтримки. Наприклад, якщо новий проект був створений за допомогою панелі дій, то в меню main.xml можна знайти app:showAsAction="never"цей файл із бібліотеки підтримки.

  • Якщо додаток орієнтований на Android версії 11 і вище, можна змінити цей атрибут на android:showAsActionв main.xml меню
  • Також типовим набором тем може бути "Theme.AppCompat.Light.DarkActionBar", як показано нижче (styles.xml)

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

    У цьому випадку батьківську тему в style.xml потрібно змінити на "android: style / Theme.Holo.Light.DarkActionBar"

  • На додаток до цього, якщо посилання на Fragment, Fragments Manager з бібліотеки підтримки було зроблено в коді MainActivity.java, їх слід відповідним чином змінити на Fragment, FragmentManager SDK.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.