Android导入其他工程时报错的解决方法探索

来源:互联网 发布:券商工资知乎 编辑:程序博客网 时间:2024/06/06 01:47

经常在开发android应用中,需要导入其他Android项目分析学习,但由于android版本更新太快,为了适配不同的android版本,Android引入了很多很强大的版本资源适配兼容机制,常见的有对不同API版本的Android系统分别建立不同的资源文件如“values-v11”、“values-v14”和“values-v15”等(谷歌对不同的屏幕大小(像素密度)上面的适配采用不同的drawable布局文件解决,如“drawable-hdpi”、“drawable-mdpi”、“drawable-xxdpi”等)。所以在导入其他Android工程时,经常会出现形如“”的报错

/usr/local/app/workspace/AMapYunTuUpDataDemo/res/values/styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.[2014-12-14 14:04:42 - AMapYunTuUpDataDemo] [2014-12-14 14:04:42 - AMapYunTuUpDataDemo] /usr/local/app/workspace/AMapYunTuUpDataDemo/res/values-v11/styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.[2014-12-14 14:04:42 - AMapYunTuUpDataDemo] [2014-12-14 14:04:42 - AMapYunTuUpDataDemo] /usr/local/app/workspace/AMapYunTuUpDataDemo/res/values-v14/styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.[2014-12-14 14:04:42 - AMapYunTuUpDataDemo] [2014-12-14 14:05:37 - AMapYunTuUpDataDemo] /usr/local/app/workspace/AMapYunTuUpDataDemo/res/values/styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.[2014-12-14 14:05:37 - AMapYunTuUpDataDemo] [2014-12-14 14:05:37 - AMapYunTuUpDataDemo] /usr/local/app/workspace/AMapYunTuUpDataDemo/res/values-v11/styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.[2014-12-14 14:05:37 - AMapYunTuUpDataDemo] [2014-12-14 14:05:37 - AMapYunTuUpDataDemo] /usr/local/app/workspace/AMapYunTuUpDataDemo/res/values-v14/styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.[2014-12-14 14:05:37 - AMapYunTuUpDataDemo] 

进入到针对不同API版本的values文件夹中将 出现问题的styles文件内的parent="Theme.AppCompat.Light.DarkActionBar">改为parent="android:Theme.AppCompat.Light.DarkActionBar">加上“android:”即可。

第二个问题:Theme表示主题,用于Activity,Style表示风格。在xml布局文件中,一般用到android:?和@,?表示引用的是属性,@表示引用的是资源如“string”“drawable”等。修改project.properties文件中的# Project target.
target=Google Inc.:Google APIs:16属性的API可以改变Android项目引用的android.jar版本。在AndroidManifest.xml文件中一般推荐使用android:targetSdkVersion为最新版的API,以实现对最新版的兼容,如果不知道最新版本API是多少可使用参数“android.os.Build.VERSION_CODES”代替,也就是写成“android:targetSdkVersion="android.os.Build.VERSION_CODES"”。还有一个问题,如果minSdkVersion在Android 4.0(API14)以下,需要引入兼容包“compat-vx”。

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

使用Android tools中的Run Lint可以查看并解决工程里潜在的性能、bug问题

可参考如下文章:http://blog.csdn.net/heirenheiren/article/details/7518596

http://blog.csdn.net/think_soft/article/details/7416951

http://blog.csdn.net/huangbiao86/article/details/7058383

——————————————————————————————————————————————————————————————————
当你的androidAPI 由2.1版本更换成2.2版本时:
 res/vavlues/styles.xml中使用的android:WindowTitle会报以下异常,
error: Error retrieving parent for item: No resource found that matches the given name 'android:WindowTitle'.
从而导致我们的程序无法编译通过。

原因:
android2.1中的某些API(包括类方法或者XML属性)更换成android2.2时,它们的路径已经发生了改变,从而导致编译器无法找到它们,所以编译无法通过。


解决方案:
1. 在Eclipse中打开任意一个.java文件,输入
   android.R.style.
   这时你会看到一个提示列表,仔细看看,里面确实没由WindowTitle, 但是我们发现了一个TextAppearance_WindowTitle. 没错, 在android2.2中,它已经被改成了TextAppearance_WindowTitle

2. 回到报错的res/values/styles.xml, 将<style name="XWindowTitle" parent=""> 
   相应地修改成
  <style name="XWindowTitle" parent="android:TextAppearance.WindowTitle">

  注意:这里你也许会注意到 .java文件中的XML属性,与 .xml文件中XML属性很是类似。
  这不是巧合,android官方文档规定:
  java文件中的android.R.style.TextAppearance_WindowTitle 对应
  xml文件中的android:TextAppearance.WindowTitle。 “下划线”与“点”时对应关系。

关于Styles and Themes 之间的关系,请参考官方网站
http://developer.android.com/guide/topics/ui/themes.html

1 0
原创粉丝点击