新しいプロジェクトを作成するたびに、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上のどのappeardをAPI 11 (アンドロイド3.0ハニカム)このシステムの旧バージョンを実行するデバイス上で。

また、サポートライブラリの自動インクルードをデフォルトで無効にすることもできます。


54
まあそれはBSです。私は過去2か月間、APIレベル10でEclipseを使用してきましたが、この奇抜なキットカットAPIが登場するまで、互換性ライブラリやフラグメントレイアウトをインポートすることはありませんでした。この時点で表示を停止する最も簡単な方法は、アクティビティを自動的に作成しないことです。したがって、プロジェクトが作成されたら、「アクティビティの作成」のチェックを外して、独自のアクティビティを作成する必要があります。
user3223214 14年

2
ええ、それがポイントです。上記の理由により、ライブラリは常に含まれます。
Halim Qarroum 2014年

1
まあ、サポートライブラリは、Android SDKの多数のコンポーネントの下位互換性を提供します。ActionBar専用ではありません。サポートライブラリの最新バージョンには、サポートされているAPIの多くが含まれています。詳細については、developer.android.com / tools / support-library / index.htmlをご覧ください。
Halim Qarroum 2014年

1
app_compatを避ける方が良いですか?
Neolardo Va Dinci、2015

2
Jeez google !!! パッチの適用を中止し、パッチを適用し、パッチを適用すると、これらのすべてのsupportLibraryエラーとバージョンが原因で、問題が発生します。
Josh、

59

新しいを作成Android Application Projectし、チェックを外し Create activityステップ2(設定プロジェクト)で。


ありがとうしかしmenu、プロジェクトでフォルダが作成されませんでした。
スティーブ

1
ワークスペースからappcompat_v7プロジェクトを削除し、[アクティビティを作成]オプションをオフにして新しいAndroidプロジェクトを作成すると、うまくいきました。他の回答で指定されたものがうまくいきませんでした。ありがとう。
スリニバサンN

22

新しいプロジェクトを作成するたびに、Eclipseがappcompat v7ライブラリサポートを自動的に追加する理由

ターゲットSDKが15に設定されているため、アクションバーはデフォルトでオンになり、サポートされる最小SDKは10に設定されます。アクションバーは11で登場するため、サポートライブラリが必要なため、Eclipseが追加します。参照。

プロジェクトプロパティのビルドパスでプロジェクトライブラリを構成できます。


12
最小SDKを12または13として構成しても、Eclipseから同じ動作が得られます...
mikey

18

Eclipseが自動的にキットカットのAPI appcompat_v7.Becauseは、それが自動的に追加されます自体を立ち上げ作成appcompat_v7してfragment_main.xml

これらを解決する最良の方法:

  1. 最初に、プロジェクトでは、Right click->properties->Androidそこにred marked appcompat配置されてReferenceいることがわかります。それをクリックして削除しProject Build Targetます。次に、で正しいターゲット名を選択します。

  2. Eclipseで作成された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 /値/のstyles.xml:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
  5. res /値-V11 /のstyles.xmlあなたは、これらのように変更する必要があります。

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
  6. res /値-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
彼らは何を考えていますか?Eclipseには、このためのワンクリックソリューションはありませんか?
Pacerier 2014年

1
@Pacerier:ええ。appcompat_v7を使用する。
David Liu

8

これは、最小SDKバージョンが10に設定されているために含まれています。これActionBarはAPI 11で導入されました。Eclipseが自動的に追加するため、サポートしているすべてのAndroidバージョンのスペクトル全体で、アプリの一貫性が高まります。


4

2.xバージョンを対象としていない場合は、4.xの最小SDKバージョンを設定してプロジェクトを作成できます。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 2014

1
appcompat_v7_xを削除する方法を示したいのですが、これは問題ではないと思います。私が間違えた場合、私はstackoverflowの初心者ですのでご容赦ください。
LêクアンDuyと

3

私の英語で申し訳ありません。新しいAndroidプロジェクトを作成するときは、高レベルのAPIを選択する必要があります。下位のAPIでそれを行った場合は、Androidマニフェストで編集して上位のAPIを持つようにします。


2

http://developer.android.com/guide/topics/ui/actionbar.htmlによると

ActionBar APIは、Android 3.0(APIレベル11)で最初に追加されましたが、Android 2.1(APIレベル7)以上との互換性のためにサポートライブラリでも利用できます。

つまり、この自動生成されたプロジェクトは、ActionBarをAPI 7〜10に追加するプロセスをモジュール化しています。

FroyoのActionBarの例

このトピックに関する簡単な説明とチュートリアルについては、http://hmkcode.com/add-actionbar-to-android-2-3-x/を参照してください


0

minSDKが11に設定され、targetSDKが19に設定されている場合でも、ADT 22.6.2バージョンで新しいandroidプロジェクトを作成しているときに「appcompat」ライブラリが作成されることに気付きました

これは、新しいプロジェクトテンプレートで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のコードで作成された場合、これらはSDKのFragmentManagerに適切に変更する必要があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.