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


217

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

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

如何在没有appcompat库的情况下创建一个简单的项目?仅供参考,我已经下载了最新版本的ADT,并且最近进行了所有更新。我正在使用Windows 7 x64。

在此处输入图片说明

Answers:


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。在过去的两个月中,我一直在API级别10上使用eclipse,在此怪异的kitkat api出现之前,它从未导入兼容性库或片段布局。到目前为止,阻止它出现的最简单方法似乎不是自动创建活动。因此,您必须取消选中“创建活动”,并在创建项目后创建自己的活动。
user3223214 2014年

2
是的,这就是重点,由于上述原因,将始终包含该库。
哈里姆·卡鲁姆

1
好吧,支持库确实为Android SDK的众多组件提供了向后兼容性。不仅适用于ActionBar。您可以在最新版本的支持库中找到一大堆受支持的API。您可能需要查看developer.android.com/tools/support-library/index.html了解更多详细信息。
哈利姆·卡鲁姆

1
避免使用app_compat更好吗?
Neolardo Va Dinci

2
哎呀,谷歌!!!退出补丁程序,补丁程序和补丁程序,所有这些支持库错误和版本使我们发疯。
2015年

59

创建一个新的Android Application Project取消选中 Create activity第二步(配置项目)。


谢谢但是menu文件夹不是在我的项目中创建的。
2014年

1
从我的工作区中删除appcompat_v7项目,然后通过取消选中“创建活动”选项来创建一个新的android项目,这对我来说很成功。其他答案中指定的内容对我不起作用。谢谢。
Srinivasan N

22

为什么每次创建新项目时eclipse都会自动添加appcompat v7库支持

由于您的目标SDK设置为15,默认情况下操作栏处于打开状态,而最低支持的SDK设置为10。操作栏出现在11中,因此您需要一个支持库,Eclipse会为您添加它。参考。

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


12
如果我将最小sdk配置为12或13,我仍然会从日食中得到相同的行为……
mikey

18

Eclipse自动创建了appcompat_v7。由于Kitkat Api已启动,因此它会自动添加appcompat_v7fragment_main.xml

解决这些问题的最佳方法:

  1. 首先在Project中Right click->properties->Android。在那里您可以看到red marked appcompat放置在中Reference。单击并删除它。然后在中选择正确的目标名称Project Build Target

  2. 删除fragment_main.xml程序兼容性文件在您创建的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. 像下面这样更改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。API11 ActionBar中引入了该功能。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 2014年

1
我只想显示一种删除appcompat_v7_x的方法,我不认为这是个问题。如果我犯了一个错误,请原谅我,因为我是stackoverflow的新手。
黎光维战

3

对不起,我的英语,当您创建一个新的android项目时,您应该选择高级api,例如:从api 17到api 21,它将没有appcompat并且非常容易共享项目。如果使用较低的API进行操作,则只需在Android Manifest中进行编辑即可使用较高的API :),然后,您可以删除Appcompat V7。



0

我发现在使用ADT 22.6.2版本创建新的android项目时创建了“ appcompat”库,即使将minSDK设置为11并将targetSDK设置为19

发生这种情况是因为,在新的项目模板中,android使用的是来自支持库的某些属性。例如,如果使用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”

  • 此外,如果在MainActivity.java代码中从支持库引用了Fragment,Fragments Manager,则必须将其适当地更改为SDK的Fragment,FragmentManager。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.