黑马程序员技术交流社区
标题: 【武汉校区】独家分享:Eclipse下环境问题分析与解决 [打印本页]
作者: 武汉分校-小舞 时间: 2016-3-16 13:28
标题: 【武汉校区】独家分享:Eclipse下环境问题分析与解决
本帖最后由 武汉分校-小舞 于 2016-3-16 13:34 编辑
【武汉校区】独家分享:Eclipse下环境问题分析与解决
常见案例1 .
创建工程 参数如下:
向下兼容最小的版本 Minimum Required SDK: 4.0 API 14
向上兼容最大版本 Target SDK 4.4 API 19
编绎版本 Compile With SDK 4.4 API 19
如图:
点下一步,工程创建建完成后。没有任何问题。如下图:
接下来,我们将向下兼容的最小版本从 4.0 API14 改成 2.3.3 API 19 再创建一个工程。
创建工程 参数如下:
向下兼容最小的版本 Minimum Required SDK: 2.3.3 API 10
向上兼容最大版本 Target SDK 4.4 API 19
编绎版本 Compile With SDK 4.4 API 19
如图
工程最后一步,点finish没效果,对话框不会自已关闭。 可以看到在工程列表窗口已经多出一个test2工程,工程图标上被标红,提示工程有错误,无法完成编绎。在输出控制台也可以看到很多红色的错误提示.我们只能点Cancel窗口关闭对话框。
根据错误的提示,发现是R文件没有生成,导致工程报错。然后分析R文件没生成的原因发现是因为res/values目标下的styles.xml文件编译不过。提示:error: Error retrieving parent for item: Noresource found that matches the given name 'Theme.AppCompat.Light'.
Styles.xml的内容
从图中可以看出AppTheme这个主题继承自AppBaseTheme,AppBaseTheme这个主题又是继承自Theme.AppCompat.Light这个主题。AppTheme这个主题就是应用程序的默认主题,这个可从androidmanifest.xml知晓.
通过一系列分析,基本可以确定这个引起这个错误的原因是编译器(应该是aapt)在当前的编译环境中并没有找到Theme.AppCompat.Light这个主题。所以没有办法生成R文件。所有就导致我们工程找不到R文件,最后工程编译不通过。那Theme.AppCompat.Light这个主题应该是在哪定义的呢? 答案就是v7包.
当我们使用eclipse来创建一个新工程,选择向下兼容的最小版本为2.3.3 最大的向上兼容版为4.3时,
我们有可能要在2.3.3等低版本手机上使用4.x以后的新特性如ActionBar.所以ADT会自已帮我们生成一个
V7的库工程,并然新创建的工程自动引入这个库工程。这样在要使用到高版本的新特性时,只要使用
V7包中就资源就可以实现向下兼容了。
我们这里报错,就是因为ADT没有帮我们生成一个v7的库工程,并成功引用这个库工程。所以我们工程中
资源文件没办法继承v7包中定义的主题。然后就报错。那为什么ADT没能帮我们创建V7包的库工程,并引用呢? 有两个常见原因:
1. 没有下载v4v7等兼容包. 解决办法 打开SDK Manager下载兼容包库
下载后的存放路径:
2. ADT版本太老,既使下载了v7 兼容包也没生成引用库工程。
这个问题引起的ADT不生成v7引用工程的解决方法有两个
1. 更新ADT 这个就不解释了,大家都会。用eclipse更新下ADT插件就行.
2. 手动导入V7 引用库工程
如果你不想更新ADT,又要用到v7包怎么办? 那就是自已手动导入V7工程咯!!~~~ 导入方法也比较简单。下面给大家演示一下.
建后好,发现v7也在报错。这是因为最新的v7要6.0的sdk才能编译通过.我们修改project.properties
改成23也就是6.0
改好后,需要Clean一下才能生效.
最后一步,我们让我们的工程引用v7.这样就可以找到v7中的资源了,就不会报错了.
在我们的工程中点右键,Properties 选中Android如图
添加v7工程的引用
引用v7后,最好将自已的工程也用6.0编译.引用后,我们发现就可以顺利通过编译了.
本帖持续更新,想最快获取最新传智播客武汉讲师分享技术文章请加QQ 1641907557 ,后期会分享更多与实体班同步教程,助你冲击月薪20K!
推荐阅读:
作者: cc1991 时间: 2016-3-16 17:53
还在基础班,蹦跶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |