如何删除支持库(appcompat_v7)[Eclipse]

时间:2014-03-31 18:10:07

标签: java android eclipse

我最近将我的eclipse和ADT插件更新到最新版本,并认识到了一些重大变化。每当我创建一个新的Android应用程序项目时,都会出现一个之前不存在的新appcompat_v7库以及一个fragment_main.xml。这是为什么?为什么activity_main.xml文件不再是活动布局的首选,为什么appcompat库现在包含在每个项目中?我试图多次删除eclipse / adt / sdk并从sdk管理器中删除支持库但没有结果!我意识到它与actionbar有关但问题是每当我创建一个新项目时,项目的文件和appcompat_v7文件都会出现红色感叹号,这会阻止我编译/运行应用程序,甚至有时appcompat_v7文件也没有创造,我得到的唯一的东西是损坏的代码这里是一张图片:http://i.stack.imgur.com/XJMfW.png

所以如何删除此依赖关系并感谢

2 个答案:

答案 0 :(得分:45)

  

为什么?

因为Google工程师将这些内容添加到新活动模板中,至少对于" BlankActivity"。

  

为什么activity_main.xml文件不再是活动布局的首选

当然欢迎您使用activity_main.xml来表达您想要的任何内容。碰巧Google的当前模板要求您使用片段。 Google的模板只是模板。人们可以争辩 - 而且我强烈地认为 - " BlankActivity"模板不应该做它正在做的事情。但是,除此之外,它只是一个模板。

  

为什么appcompat库现在包含在每个项目中?

据推测,他们希望通过一致的操作栏启动您,即使在较旧的API级别上也是如此。

  

我意识到它与actionbar有关但问题是每当我创建一个新项目时,项目文件和appcompat_v7文件都会出现红色感叹号,这会阻止我编译/运行应用程序甚至有时appcompat_v7文件不会创建,我唯一得到的是损坏的代码

我大约一周前报道了this issue

  

所以如何删除此依赖

步骤1:在Package Explorer中右键单击项目名称,然后选择Properties。点击左侧属性类别列表中的Android,然后向右下滚动到底部:

Eclipse Project Properties, Android Category

步骤2:在您将在属性对话框中看到的附加库项目列表中,您可能会看到类似于" appcompat_v7_6"的条目。您在上面的屏幕截图中看到的一个。您的最后一位数字会有所不同,可能是您的红色X而不是绿色复选标记。无论如何,如果有" appcompat_v7_NNN"在列表中,单击它,然后单击列表右侧的“删除”按钮。然后,单击“确定”按钮以关闭对话框。

步骤3:在res/values/styles.xml中,将AppBaseTheme的父级从Theme.AppCompat.Light更改为@android:style/Theme.Light。在res/values-v11/styles.xml中,将AppBaseTheme的父级从Theme.AppCompat.Light更改为@android:style/Theme.Holo.Light。在rest/values-v14/styles.xml中,将AppBaseTheme的父级从Theme.AppCompat.Light.DarkActionBar更改为@android:style/Theme.Holo.Light.DarkActionBar。请注意,这些值假设您选择了默认的" Light主题与暗动作栏"当您创建项目时 - 您需要对其他任何指令稍作调整。

步骤4:在res/menu/main/xml中,从根xmlns:app="http://schemas.android.com/apk/res-auto"元素中删除<menu>,从app:showAsAction="never"元素中删除<item>属性。

步骤5:在您的活动中(例如,MainActivity),将活动的父类更改为ActionBarActivity以外的其他内容 - FragmentActivity将是一个不错的选择,最小化您必须立即进行的其他更改的数量。另外,清理导入(例如, Ctrl-Shift-O )。

此时,除了清理您的项目(项目&gt;从主菜单中清除)之外,appcompat内容应该从使用&#34; BlankActivity&#34;创建的项目中删除。模板和&#34;导航类型&#34; &#34;无&#34;。 &#34; BlankActivity&#34;上的其他模板或导航选项;模板,可能需​​要更多的工作。

答案 1 :(得分:7)

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

  1. 首先在项目中Right click->properties->Android。你可以 请参阅red marked appcompat中的Reference。单击该和 删除它。

  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,你必须这样做才能创建一个新项目