为什么Eclipse在创建新项目时会自动添加appcompat v7库支持?

时间:2014-03-07 21:45:47

标签: android eclipse android-appcompat

为什么Eclipse在创建新项目时会自动添加appcompat v7库支持?

我正在创建一个MainActivity应该扩展Activity的简单项目,但事实并非如此。 Eclipse自动添加操作栏支持。

如何在没有appcompat库的情况下创建简单项目?仅供参考,我已经下载了最新版本的ADT,最近更新了所有内容。我使用的是Window 7 x64。

Enter image description here

10 个答案:

答案 0 :(得分:105)

正如Android Support Library Overview中所述,默认情况下包含支持库被认为是一种很好的做法,因为设备的多样性和不同版本的Android之间存在碎片(因此,提供的的API)。

这就是为什么默认情况下通过Android Development Tools (ADT)将Eclipse code templates tools包含在内的原因。

我注意到您在示例中定位API 15,但是您的软件包所需的miminum是API 10,兼容性库可以为其提供大量向后兼容的API。一个例子是在运行旧版本系统的设备上使用API 11 (Android 3.0 Honeycomb)上的Fragment API的能力。

还应注意,您可以默认停用支持库的自动包含。

答案 1 :(得分:59)

在第二步(配置项目)中新建Android Application Project取消选中 Create activity

答案 2 :(得分:22)

  

为什么我的eclipse会自动添加appcompat v7库支持   每当我创建一个新项目

因为您的目标SDK设置为15,默认情况下操作栏处于启用状态,并且您的最低支持SDK设置为10.操作栏出现在11中,因此您需要一个支持库,Eclipse会为您添加它。 Reference.

您可以在项目属性的构建路径中配置项目库。

答案 3 :(得分:18)

Eclipse自动创建appcompat_v7.由于Kitkat Api自行启动,它会自动添加appcompat_v7fragment_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 / 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);
    
    }
    
    }
    
  9. LikeWise,你必须这样做才能创建一个新项目

答案 4 :(得分:8)

它包含在内,因为您的最低SDK版本设置为10. {1}}是在API 11中引入的.Eclipse自动添加它,以便您的应用程序在您支持的所有Android版本的整个范围内看起来更加一致。

答案 5 :(得分:4)

如果您没有定位2.x版本,则可以设置4.x的最小sdk版本,然后创建项目。不会创建Appcompat V7 lib。

答案 6 :(得分:4)

我是Android的新手,当我创建新的Android应用程序项目时,总是会创建项目appcompat_v7让我感到很不舒服。

这只是一个散步。选择项目属性 - &gt; Android然后在Library框中删除appcompat_v7_x并添加appcompat_v7。现在您可以删除appcompat_v7_x。

在“创建项目”向导中取消选中“创建活动”不起作用,因为在通过向导创建活动时,会再次出现 appcompat_v7_x 。我的ADT版本为 v22.6.2-1085508 。 我很抱歉,如果我的英语不好。

答案 7 :(得分:3)

对不起我的英文,当你创建一个新的android项目时,你应该选择高级别的api,例如:从api 17到api 21,它不会有appcompat并且很容易分享项目。 如果您使用较低的API执行此操作,则只需在Android Manifest中编辑以获得更高的API :),之后,您可以删除Appcompat V7。

答案 8 :(得分: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的过程。

Example of ActionBar on Froyo

有关该主题的简化说明和教程,请参阅http://hmkcode.com/add-actionbar-to-android-2-3-x/

答案 9 :(得分:0)

我注意到在使用ADT 22.6.2版本创建新的Android项目时创建'appcompat'库,即使minSDK设置为11且targetSDK设置为19

这种情况正在发生,因为在新的项目模板中,android正在使用来自支持库的一些属性。例如,如果使用操作栏创建了一个新项目,那么在菜单的main.xml中可以找到来自支持库的app:showAsAction="never"

  • 如果应用程序的目标是Android 11及更高版本,则可以 在菜单的main.xml
  • 中将此属性更改为android:showAsAction
  • 默认主题集也可以是 “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,片段管理器 支持库是在MainActivity.java的代码中制作的,这些都有 适当地改为SDK的Fragment,FragmentManager。