为啥每当我创建新项目时 Eclipse 会自动添加 appcompat v7 库支持?

Posted

技术标签:

【中文标题】为啥每当我创建新项目时 Eclipse 会自动添加 appcompat v7 库支持?【英文标题】:Why does Eclipse automatically add appcompat v7 library support whenever I create a new project?为什么每当我创建新项目时 Eclipse 会自动添加 appcompat v7 库支持? 【发布时间】:2014-04-11 06:16:17 【问题描述】:

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

我正在创建一个简单的项目,其MainActivity 应该扩展Activity,但它没有。 Eclipse 自动添加操作栏支持。

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

【问题讨论】:

【参考方案1】:

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

这就是为什么Android code templates tools通过Android Development Tools (ADT)默认集成在Eclipse中的原因。

我注意到您在示例中以 API 15 为目标,但您的软件包所需的最低 SDK 为 API 10,兼容性库可以为此提供大量向后兼容的 API。例如,可以在运行旧版本系统的设备上使用出现在API 11 上的Fragment API(Android 3.0 Honeycomb)

还需要注意的是,您可以默认禁用自动包含支持库

【讨论】:

那是废话。在过去的 2 个月里,我一直在 API 级别 10 上使用 eclipse,并且在这个该死的 kitkat api 出现之前,它从未导入过兼容性库或片段布局。在这一点上,阻止它出现的最简单方法似乎不是自动创建一个活动。因此,您必须取消勾选“创建活动”并在创建项目后创建自己的活动。 是的,就是这样,由于上述原因,该库将始终包含在内。 嗯,支持库确实为 Android SDK 的众多组件提供了向后兼容性。不仅适用于 ActionBar。您可以在最新版本的支持库中找到一大堆受支持的 API。您可能想查看developer.android.com/tools/support-library/index.html 了解更多详情。 避免app_compat更好吗? 天哪,谷歌!!!退出打补丁,打补丁,打补丁,所有这些 supportLibrary 错误和版本让我们抓狂。【参考方案2】:

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

【讨论】:

谢谢,但我的项目中没有创建 menu 文件夹。 从我的工作区中删除 appcompat_v7 项目并通过取消选中“创建活动”选项来创建一个新的 android 项目对我来说是诀窍。其他答案中指定的内容对我不起作用。谢谢。【参考方案3】:

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

因为你的目标SDK设置为15,其中Action Bar默认开启,你的最小支持SDK设置为10。Action Bar出现在11,所以你需要一个支持库,Eclipse为你添加了. Reference.

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

【讨论】:

如果我将最小 sdk 配置为 12 或 13,我仍然会从 eclipse 中得到相同的行为...【参考方案4】:

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

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

    首先在项目中,Right click->properties->Android.那里你可以 见red marked appcompat 放在Reference 中。单击它并 删除它。然后在Project Build Target中勾选正确的目标名称。

    删除在您的 Eclipse 中创建的 fragment_main.xmlAppcompat 文件。

    编辑和更改您的 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_
        android:layout_>
    
        <TextView
            android:layout_
            android:layout_
            android:text="@string/hello_world" />
    
    </RelativeLayout>
    

    res/values/styles.xml:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
    
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
        </style>
    
    </resources>
    

    res/values-v11/styles.xml 中,您必须进行如下更改:

    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        </style>
    
    </resources>
    

    res/values-v14/styles.xml 中,您必须进行如下更改:

      <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Light">
        </style>
    
        <style name="AppTheme" parent="AppBaseTheme">
        </style>
    
    </resources>
    

    像这样更改您的 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>
    

    最后像这样更改您的 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 你必须这样做才能创建一个新项目

【讨论】:

他们在想什么? Eclipse 不应该有一个一键式的解决方案吗? @Pacerier:是的。通过使用 appcompat_v7。【参考方案5】:

包含它是因为您的最低 SDK 版本设置为 10。ActionBar 是在 API 11 中引入的。Eclipse 会自动添加它,以便您的应用在您支持的所有 android 版本的范围内看起来更加一致。

【讨论】:

【参考方案6】:

如果您的目标不是 2.x 版本,您可以设置 4.x 的最低 sdk 版本,然后创建项目。不会创建 Appcompat V7 库。

【讨论】:

【参考方案7】:

我是 Android 新手,当我创建新的 Android 应用程序项目时总是会创建项目 appcompat_v7,这让我很不舒服。 这只是四处走走。选择 Project Properties -> Android,然后在 Library 框中删除 appcompat_v7_x 并添加 appcompat_v7。现在您可以删除 appcompat_v7_x。 在创建项目向导中取消选中创建活动不起作用,因为通过向导创建活动时 appcompat_v7_x 再次出现。我的 ADT 版本是 v22.6.2-1085508。 如果我的英语不好,我很抱歉。

【讨论】:

看看这里有这么多答案。这个部分是为了回答。你已经在回答部分发布了问题。 我只是想展示一种删除 appcompat_v7_x 的方法,我认为这不是一个问题。如果我犯了错误,请原谅我,因为我是 *** 的新手。【参考方案8】:

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

【讨论】:

【参考方案9】:

根据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 的过程。

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

【讨论】:

【参考方案10】:

我注意到在使用 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,Fragments Manager 来自 支持库是在 MainActivity.java 的代码中制作的,这些有 适当更改为 Fragment,SDK 的 FragmentManager。

【讨论】:

以上是关于为啥每当我创建新项目时 Eclipse 会自动添加 appcompat v7 库支持?的主要内容,如果未能解决你的问题,请参考以下文章

为啥eclipse每次新建项目时都会出现一个错误弹窗,并会在src下自动生成module-info.java文档?

每当我启动时,我的 Eclipse 都会自动关闭

为啥 Visual Studio 会自动更改我的表单布局?

如何在Eclipse Web项目中禁用“autodeploy”到服务器功能

eclipse创建的java项目为啥默认显示module

每当我将文件添加到项目时,XCode 都会崩溃