为啥每当我创建新项目时 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_v7
和 fragment_main.xml
。
解决这些问题的最佳方法:
首先在项目中,Right click->properties->Android
.那里你可以
见red marked appcompat
放在Reference
中。单击它并
删除它。然后在Project Build Target
中勾选正确的目标名称。
删除在您的 Eclipse 中创建的 fragment_main.xml 和 Appcompat 文件。
编辑和更改您的 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: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文档?