为什么Eclipse在创建新项目时会自动添加appcompat v7
库支持?
我正在创建一个MainActivity
应该扩展Activity
的简单项目,但事实并非如此。 Eclipse自动添加操作栏支持。
如何在没有appcompat
库的情况下创建简单项目?仅供参考,我已经下载了最新版本的ADT,最近更新了所有内容。我使用的是Window 7 x64。
答案 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_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_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>
在 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,你必须这样做才能创建一个新项目
答案 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的过程。
有关该主题的简化说明和教程,请参阅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: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”