RossWeatherMap天气地图项目中踩的雷(二):导入Support-v7-appcompact相关问题汇总

来源:互联网 发布:线切割3b编程软件 编辑:程序博客网 时间:2024/06/07 06:23
  • 开发环境:Eclipse
  • JDK版本:1.7
  • Android版本:21

在天气地图界面上用到了ActionBarDrawerToggle控件来实现侧滑菜单,因此需要导入support-v7-appcompact库。由此引发了一大堆的问题。
首先来讲下正确的使用support-v7-appcompact库的方法。

第一步当然是使用Android SDK Manager下载support包啦。
下载安装最新的Android Support Library

第二步是导入support-v7-appcompact工程到你的workspace。Import->General->Existing Project Into Workspace。工程在你安装adt文件夹下sdk->extras->android->support->v7->appcompact。导入时一定不要忘了勾选copy projects into workspace。
导入support-v7-appcompact工程

第三步将support-v7-appcompact设置为library。在工程文件夹上右键property->android->Library勾选Is Library,然后apply->OK。
将support-v7-appcompact设置为library

第四步在自己的工程中引用support-v7-appcompact library。在工程文件夹上右键property->android->Library->add,选择support-v7-appcompact library,然后apply->OK。
引用library

做完以上工作后就可以使用support-v7-appcompact包里的内容了。

看起来很简单,但是实际操作中毫无疑问会出现各种各样的问题。下面来具体说说需要注意的点。

首先是导入完support-v7-appcompact包之后出现的各种报错信息。

  • error: Error retrieving parent for item: No resource found that matches the given name ‘android:Widget.Material.ActionButton’.
    这种一般是工程target SDK version低于21导致的。support-v7-appcompact工程需要项目在version 21即android 5.0.1以上才可以使用。解决办法是工程文件夹右键property->android->Project Build Target选择高于21以上的版本。或者修改project.properties文件设置target=21及以上。当然你自己的工程也要设置在version 21以上。
  • 然后可能有res/value-v22或者res/value-v23文件夹报错。这个是因为在设置主题时使用了对应版本的android 镜像里的内容导致的。解决办法是更新你的adt。下载高版本的android的System-image。或者如果你的软件不需要支持更高版本也可以直接删除工程里报错的res/value-v22或者v23文件夹。哈哈,简单粗暴。
  • 然后有可能在你的工程中报错Unable to execute dex: Multiple dex files define。这个是重复引用了相同的jar包的缘故。删除你自己工程中的support-v4.jar以及support-v7-appcompact.jar。
  • 还有一个极小几率出现的错误就是引用library出错。我们前面讲到必须在导入support-v7-appcompact工程时必须勾选copy projects into workspace就是避免出现这个错误。
    引用library出错

再来讲一下错误的导入方法:

  • 只导入support-v7-appcompact.jar到你的工程中。虽然不会有error但是运行时会报java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable。因为在使用控件时会用到support-v7-appcompact工程res文件夹下一些资源文件。
  • properties->Java Build Path->Project添加support-v7-appcompact项目会报Could not find android-support-v7-appcompat.apk。原因是support-v7-appcompact项目无法单独通过编译,只能作为library 作为项目的外部引用。

以上是一些常见的导入support-v7-appcompact 相关的问题解决办法以及出现的原因。如果还有其他问题出现也欢迎大家向我反馈。完善这篇博文。

PS:大家还是转Android Studio+Grandle吧。官方好像已经放弃支持Eclipse了??o(╯□╰)o

0 0
原创粉丝点击