Eclipse가 새 프로젝트를 만들 때마다 appcompat v7 라이브러리 지원을 자동으로 추가하는 이유는 무엇입니까?


217

appcompat v7새 프로젝트를 작성할 때마다 Eclipse가 자동으로 라이브러리 지원을 추가하는 이유는 무엇 입니까?

MainActivity확장 해야하는 간단한 프로젝트를 만들고 Activity있지만 그렇지 않습니다. Eclipse는 자동으로 작업 표시 줄 지원을 추가합니다.

appcompat라이브러리 없이 간단한 프로젝트를 어떻게 만듭니 까? 참고로, 최근에 업데이트 된 모든 내용으로 최신 버전의 ADT를 다운로드했습니다. Window 7 x64를 사용하고 있습니다.

여기에 이미지 설명을 입력하십시오

답변:


105

Android의 지원 라이브러리 개요에 명시된 바와 같이 , 다양한 버전의 장치와 다양한 버전의 Android (및 제공된 API)간에 존재하는 조각화로 인해 기본적으로 지원 라이브러리를 포함하는 것이 좋습니다.

이것이 Eclipse에 포함 된 Android 코드 템플릿 도구Android Development Tools (ADT) 가 기본적으로 통합을 통해 제공 되는 이유 입니다.

API 15샘플에서 타겟팅 했지만 패키지에 필요한 최소 SDK는 API 10입니다. 호환성 라이브러리는 엄청난 양의 이전 버전과 호환되는 API를 제공 할 수 있습니다. 예 Fragment API를 들어이 시스템의 이전 버전을 실행하는 기기 에서 API 11 (Android 3.0 Honeycomb) 에 표시된 것을 사용할 수 있습니다.

또한 기본적으로 지원 라이브러리 의 자동 포함을 비활성화 할 수 있습니다 .


54
잘 BS입니다. 지난 2 개월 동안 API 레벨 10에서 일식을 사용해 왔으며이 무서운 키트 캣 API가 나올 때까지 호환성 라이브러리 또는 조각 레이아웃을 가져 오지 않았습니다. 이 시점에서 표시를 중지하는 가장 간단한 방법은 활동을 자동으로 작성하지 않는 것입니다. 따라서 "활동 만들기"를 선택 해제하고 프로젝트를 만들 때 직접 활동을 만들어야합니다.
user3223214

2
예, 그게 요점입니다. 위의 이유로 라이브러리가 항상 포함됩니다.
Halim Qarroum 2016 년

1
지원 라이브러리는 Android SDK의 여러 구성 요소에 대한 하위 호환성을 제공합니다. ActionBar뿐만 아니라 최신 버전의 지원 라이브러리에서 지원되는 모든 API를 찾을 수 있습니다. 자세한 내용 은 developer.android.com/tools/support-library/index.html 을 참조하십시오.
Halim Qarroum 2015 년

1
app_compat를 피하는 것이 더 낫습니까?
Neolardo Va Dinci

2
구글 !!! 패치 및 패치 및 패치를 종료하면 이러한 모든 지원 라이브러리 오류 및 버전으로 인해 많은 어려움을 겪고 있습니다.
Josh

59

2 단계에서 새 프로젝트를 작성 Android Application Project하고 선택 취소 하십시오 Create activity(프로젝트 구성).


고맙지 만 menu프로젝트에서 폴더가 생성되지 않았습니다.
Steve

1
내 작업 공간에서 appcompat_v7 프로젝트를 삭제하고 '활동 만들기'옵션을 선택 취소하여 새 안드로이드 프로젝트를 만들면 나에게 트릭이되었습니다. 다른 답변에 지정된 것들이 저에게 효과적이지 않았습니다. 감사.
Srinivasan N

22

새 프로젝트를 만들 때마다 Eclipse가 appcompat v7 라이브러리 지원을 자동으로 추가하는 이유

대상 SDK가 15로 설정되어 있고 기본적으로 조치 표시 줄이 켜져 있고 최소 지원 SDK가 10으로 설정되어 있습니다. 조치 표시 줄이 11에 나오므로 지원 라이브러리가 필요하므로 Eclipse가이를 추가합니다. 참고.

프로젝트 속성의 빌드 경로에서 프로젝트 라이브러리를 구성 할 수 있습니다.


12
최소 SDK를 12 또는 13으로 구성해도 여전히 일식에서 동일한 동작이 나타납니다.
mikey

18

Eclipse는 자동으로 Kitkat으로 API의 appcompat_v7.Because가 자동으로 추가 자체를 시작 만들어 appcompat_v7fragment_main.xml.

이를 해결하는 가장 좋은 방법 :

  1. 첫째 프로젝트, Right click->properties->Android.There 당신이 볼 수 red marked appcompat있는 위치 Reference. 그것을 클릭하고 제거하십시오. 그런 다음에서 올바른 대상 이름을 선택하십시오 Project Build Target.

  2. Eclipse 에서 작성된 fragment_main.xmlAppcompat 파일을 삭제 하십시오 .

  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. 에서 고해상도 / 값 / styles.xml :

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
    
  5. 에서 고해상도 / 값-V11 / styles.xml은 당신은이 같은 변화에 있습니다 :

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
    
  6. 에서 고해상도 / 값-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);
    
    }
    
    }
    

LikeWise는 새로운 프로젝트를 만들기 위해해야한다


2
그들은 무엇을 생각하고 있습니까? 이클립스에 원 클릭 솔루션이 없어야합니까?
Pacerier

1
@ 페이 서 : 네. appcompat_v7을 사용합니다.
David Liu

8

최소 SDK 버전이 10으로 설정 ActionBar되었으므로 포함되어 있습니다. API 11에 도입되었습니다. Eclipse는 자동으로 추가하므로 지원하는 모든 Android 버전의 스펙트럼에서 앱이보다 일관되게 보일 수 있습니다.


4

2.x 버전을 타겟팅하지 않는 경우 최소 SDK 버전 4.x를 설정 한 다음 프로젝트를 만들 수 있습니다. Appcompat V7 lib가 작성되지 않습니다.


4

나는 Android를 처음 사용하고 새로운 Android 응용 프로그램 프로젝트를 만들 때 appcompat_v7 프로젝트가 항상 만들어져 불편합니다.

이것은 단지 산책입니다. 프로젝트 속성-> Android를 선택한 다음 라이브러리 상자에서 appcompat_v7_x를 제거하고 appcompat_v7을 추가하십시오. 이제 appcompat_v7_x를 삭제할 수 있습니다.

마법사로 활동을 작성할 때 appcompat_v7_x 가 다시 나타나 므로 프로젝트 작성 마법사에서 활동 작성을 선택 취소하십시오 . 내 ADT 버전은 v22.6.2-1085508 입니다.
영어 실력이 나쁘면 죄송합니다.


1
여기에 답변이 너무 많습니다.이 섹션은 답변입니다. 답변 섹션에 질문을 게시했습니다.
Talha Q

1
appcompat_v7_x를 제거하는 방법을 보여주고 싶습니다. 이것이 질문이라고 생각하지 않습니다. 내가 실수를 한 경우 스택 오버 플로우를 처음 사용하기 때문에 용서하십시오.
Lê Quang Duy

3

내 영어로 죄송합니다. 새 Android 프로젝트를 만들 때 api 17에서 api 21까지 높은 수준의 api를 선택해야합니다. 더 낮은 API로 수행 한 경우 Android Manifest에서 상위 API를 갖도록 편집하면됩니다.) 이후 Appcompat V7을 삭제할 수 있습니다.


2

http://developer.android.com/guide/topics/ui/actionbar.html 에 따르면

ActionBar API는 Android 3.0 (API 레벨 11)에서 처음 추가 되었지만 Android 2.1 (API 레벨 7) 이상과 호환되도록 지원 라이브러리에서도 사용할 수 있습니다.

요컨대, 자동 생성 된 프로젝트는 API 7-10에 ActionBar를 추가하는 프로세스를 모듈화 합니다.

Froyo의 ActionBar 예

주제에 대한 간단한 설명과 자습서는 http://hmkcode.com/add-actionbar-to-android-2-3-x/ 를 참조 하십시오 .


0

minSDK가 11로 설정되고 targetSDK가 19로 설정된 경우에도 ADT 22.6.2 버전으로 새 안드로이드 프로젝트를 만드는 동안 'appcompat'라이브러리가 생성되는 것을 알았습니다.

이것은 새로운 프로젝트 템플릿에서 안드로이드가 지원 라이브러리의 일부 속성을 사용하기 때문에 발생했습니다. 예를 들어 actionbar로 새 프로젝트를 만든 경우 메뉴의 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의 코드로 작성된 경우 SDK의 FragmentManager 인 FragmentManager로 적절하게 변경되어야합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.