Почему Eclipse автоматически добавляет поддержку библиотеки appcompat v7 всякий раз, когда я создаю новый проект?

217

Почему Eclipse автоматически добавляет appcompat v7поддержку библиотеки каждый раз, когда я создаю новый проект?

Я создаю простой проект, который MainActivityдолжен расширяться Activity, но это не так. Eclipse автоматически добавляет поддержку панели действий.

Как мне создать простой проект без appcompatбиблиотеки? К вашему сведению, я скачал последнюю версию ADT со всем, что было недавно обновлено. Я использую Window 7 x64.

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

Talha Q
источник

Ответы:

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 месяцев, и он никогда не импортировал библиотеку совместимости или макет фрагмента до тех пор, пока не вышел этот чертов api kitkat. Кажется, на данный момент самый простой способ остановить его появление - не создавать действие автоматически. Таким образом, вам нужно снять галочку «создать деятельность» и создать свою собственную, когда проект будет создан.
user3223214
2
Да, в этом суть, библиотека всегда будет включена из-за вышеуказанных причин.
Халим Каррум
1
Ну, библиотека поддержки обеспечивает обратную совместимость для многих компонентов Android SDK. Не только для ActionBar. Вы можете найти целую кучу поддерживаемых API в последней версии библиотеки поддержки. Возможно, вы захотите взглянуть на developer.android.com/tools/support-library/index.html для получения более подробной информации.
Халим Каррум
1
Лучше избегать app_compat?
Неолардо Ва Динчи
2
Боже, гугл !!! Прекращение исправления, исправления и исправления, все эти куча ошибок и версий supportLibrary сводят нас с ума.
Джош
59

Создайте новый Android Application Projectи снимите флажок Create activity на шаге два (Настройка проекта).

songhir
источник
Спасибо, но menuпапка не была создана в моем проекте.
Стив
1
Удаление проекта appcompat_v7 из моей рабочей области и создание нового проекта Android с помощью снятия флажка «Создать действие» помогли мне. Вещи, указанные в других ответах, не сработали для меня. Спасибо.
Шринивасан N
22

Почему мое затмение автоматически добавляет поддержку библиотеки appcompat v7 всякий раз, когда я создаю новый проект

Поскольку для целевого SDK установлено значение 15, в котором по умолчанию панель действий включена, а минимальный поддерживаемый SDK установлен в 10. Панель действий имеет значение 11, поэтому вам нужна библиотека поддержки, поэтому Eclipse добавляет ее для вас. Ссылка.

Вы можете настроить библиотеки проекта в пути сборки свойств проекта.

Адам Стельмащик
источник
12
Если я настрою минимальный SDK как 12 или 13, я все равно получу такое же поведение от затмения ...
Майки
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 файл , созданный в вашем Затмении .

  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. Измените ваше menu / 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);
    
    }
    
    }

Как и вы должны сделать это для создания нового проекта

Стив
источник
2
О чем они думают? Разве Eclipse не должен иметь решение в один клик для этого?
Pacerier
1
@Pacerier: Да. Используя appcompat_v7.
Дэвид Лю
8

Он включен, потому что ваша минимальная версия SDK установлена ​​на 10. Он ActionBarбыл представлен в API 11. Eclipse добавляет его автоматически, чтобы ваше приложение могло выглядеть более согласованным по всему спектру всех версий Android, которые вы поддерживаете.

Ahmad
источник
4

Если вы не ориентируетесь на версии 2.x, вы можете установить минимальную версию SDK 4.x и затем создать проект. Appcompat V7 lib не будет создан.

Swapnil
источник
4

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

Это просто прогулка. Выберите «Свойства проекта» -> «Android», затем в поле «Библиотека» просто удалите appcompat_v7_x и добавьте appcompat_v7. Теперь вы можете удалить appcompat_v7_x.

Снять флажок «Создать действие в мастере создания проекта» не работает, поскольку при создании действия с помощью мастера снова появляется appcompat_v7_x . Версия моего ADT v22.6.2-1085508 .
Извините, если мой английский плохой.

Ле Куанг Дуй
источник
1
Проверьте, так много ответов присутствуют здесь. Этот раздел предназначен для ответа. Вы разместили вопрос в разделе ответов.
Talha Q
1
Я просто хочу показать способ удаления appcompat_v7_x и не думаю, что это вопрос. Если я ошибся, пожалуйста, прости меня, потому что я новичок в stackoverflow.
Ле Куанг Дуй
3

Извините за мой английский, когда вы создаете новый проект для Android, вы должны выбрать api высокого уровня, например: от api 17 до api 21, у него не будет appcompat и очень легко поделиться проектом. Если вы сделали это с более низким API, просто отредактируйте в Android Manifest, чтобы иметь более высокий API :), после этого вы можете удалить Appcompat V7.

nobjta_9x_tq
источник
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/ для упрощенного объяснения и учебника по теме.

b1nary.atr0phy
источник
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.
Дживан
источник